вот один из способов сделать это. [ ухмылка ] я не использовал Invoke-Command
для параллельной работы, поскольку вы не указали, что это необходимо. если вам действительно нужно больше скорости, то конвертируйте foreach
в блок сценариев и вызывайте его с помощью Invoke-Command
и списка доступных систем.
что он делает ...
- создает поддельный список компьютеров
это должно быть сделано через Import-CSV
или что-то вроде Get-ADComputer
.
- устанавливает сообщение "недостижимо"
- перебирает список систем
- проверяет "это там?"
- если ответит, то получить информацию об оперативной памяти и IE
- если он НЕ отвечает, установите для двух пунктов сообщение "недостижимо"
- создает пользовательский объект, который будет аккуратно экспортироваться в CSV
- отправляет объект в переменную
$Results
- заканчивает итерацию
- показывает коллекцию $ Results на экране
- отправляет эту коллекцию в файл CSV
вот код ...
# fake reading in a CSV file
# in real life, use Import-CSV [or Get-ADComputer]
$ComputerList = @"
ComputerName
LocalHost
10.0.0.1
127.0.0.1
BetterNotBeThere
$env:COMPUTERNAME
"@ | ConvertFrom-Csv
$Offline = '__Offline__'
$Results = foreach ($CL_Item in $ComputerList)
{
if (Test-Connection -ComputerName $CL_Item.ComputerName -Count 1 -Quiet)
{
$GCIMI_Params = @{
ClassName = 'CIM_ComputerSystem'
ComputerName = $CL_Item.ComputerName
}
$TotalRAM_GB = [math]::Round((Get-CimInstance @GCIMI_Params).TotalPhysicalMemory / 1GB, 0)
$GCI_Params = @{
Path = "\\$($CL_Item.ComputerName)\c$\Program Files\Internet Explorer\iexplore.exe"
}
$IE_Version = (Get-ChildItem @GCI_Params).
VersionInfo.
ProductVersion
}
else
{
$TotalRAM_GB = $IE_Version = $Offline
}
[PSCustomObject]@{
ComputerName = $CL_Item.ComputerName
TotalRAM_GB = $TotalRAM_GB
IE_Version = $IE_Version
}
}
# on screen
$Results
# to CSV
$Results |
Export-Csv -LiteralPath "$env:TEMP\FacundoCaballe_Ram_IE_Report.csv" -NoTypeInformation
вывод на экран ...
ComputerName TotalRAM_GB IE_Version
------------ ----------- ----------
LocalHost 8 11.00.9600.16428
10.0.0.1 __Offline__ __Offline__
127.0.0.1 8 11.00.9600.16428
BetterNotBeThere __Offline__ __Offline__
[MySysName] 8 11.00.9600.16428
Содержимое файла CSV ...
"ComputerName","TotalRAM_GB","IE_Version"
"LocalHost","8","11.00.9600.16428"
"10.0.0.1","__Offline__","__Offline__"
"127.0.0.1","8","11.00.9600.16428"
"BetterNotBeThere","__Offline__","__Offline__"
"[MySysName]","8","11.00.9600.16428"