Скрипт для добавления записей как найденных или в пакетах из Invoke-Command - PullRequest
1 голос
/ 09 марта 2019

Я довольно новичок в powershell.Ниже приведена моя попытка вернуть записи программного обеспечения в список систем с помощью команды invoke.Это работает.Тем не менее, кажется, что все результаты сохраняются в памяти, а затем экспортируются в CSV все сразу.Вместо этого я хотел бы выгрузить результаты партиями или по мере их возврата.Какой бы самый простой метод.Таким образом, я могу запускать аналогичные подобные CMD с наших серверов, не загоняя мой сервер, на котором выполняются сценарии, чья память в данный момент загружена на 99%, а затем процессор переходит на 99% после завершения сценария, чтобы разгрузитьрезультаты.

$IC_ScriptBlock = {
    Get-itemproperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\Uninstall* |
        Select Publisher, DisplayName, DisplayVersion, installDate
        }
$IC_Params = @{
    ThrottleLimit = 100
    ScriptBlock = $IC_ScriptBlock
    ComputerName = (Get-Content "C:\Users\JT\Desktop\Scripts\laptops.txt")
    }
Invoke-Command @IC_Params |
    Export-csv -NoTypeInformation -Path "C:\Users\JT\Desktop\Scripts\laptops.csv" -Delimiter ";"

1 Ответ

1 голос
/ 10 марта 2019

Похоже, что то, что мне нужно, было ниже.

 $Computers = Get-Content "C:\Desktop\workstations.txt" -ReadCount 20
    FOREACH ($Computer in $Computers) {
    Invoke-Command -ComputerName $Computer -ScriptBlock {
    Get-itemproperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\Uninstall\* | 
    Select @{Name="HostName";Expression={$Computer}}, Publisher, DisplayName, DisplayVersion, installDate} |
    Export-csv -NoTypeInformation -Path "C:\Desktop\results.csv" -Delimiter ";" -Append
    } 
    {
    Start-Sleep 1
    }
...