Good day!
I am writing a script to inventory computers according to different parameters. In one of the parts of the script, I need to add information about the territory from which the CSV-file was received.
To add a property to the beginning of each array, I wrote a function:
function Add-LocationProperty ($Array, $LocationName)
{
$Array | ForEach-Object {$_ | Add-Member -MemberType NoteProperty -Name Location -Value "$LocationName"}
$OrderSelection = @()
$OrderSelection += $Array[0].PSObject.Properties.Name[-1]
$OrderSelection += $Array[0].PSObject.Properties.Name | Select-Object -SkipLast 1
$Array = $Array | Select-Object $OrderSelection
Return $Array
}
$IpConfCSV = Add-LocationProperty -Array $IpConfCSV -LocationName $LocationName
$OSCSV = Add-LocationProperty -Array $OSCSV -LocationName $Location.Name
$SoftCSV = Add-LocationProperty -Array $SoftCSV -LocationName $LocationName
$CPUcsv = Add-LocationProperty -Array $CPUcsv -LocationName $LocationName
$RAMcsv = Add-LocationProperty -Array $RAMcsv -LocationName $LocationName
$DiskCSV = Add-LocationProperty -Array $DiskCSV -LocationName $LocationName
$SMBcsv = Add-LocationProperty -Array $SMBcsv -LocationName $LocationName
From the code you can see that I apply the same action to each array. Is there any way to shorten the code, for example, by using a loop?
The code below didn't work:
$IpConfCSV, $OSCSV, $SoftCSV, $CPUcsv, $RAMcsv, $DiskCSV, $SMBcsv | ForEach-Object {$ = Add-LocationProperty -Array $ -LocationName $LocationName}