用于从 Invoke-Command 找到的或成批追加记录的脚本
Script to append records as found or in batches from Invoke-Command
我对 Powershell 还很陌生。下面是我尝试通过调用命令 return 记录系统列表中的软件。它确实有效。但是,似乎所有结果都存储在内存中,然后一次全部导出到 CSV。相反,我想分批或按 returned 卸载结果。以最简单的方法为准。这样,我可以从我们的服务器 运行 类似的类似 CMD,而不会使我的服务器陷入困境 运行 正在运行脚本,其内存目前处于 99% 的负载,然后是 CPU 脚本完成后跳转到 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 ";"
看来下面是我需要的。
$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
}
我对 Powershell 还很陌生。下面是我尝试通过调用命令 return 记录系统列表中的软件。它确实有效。但是,似乎所有结果都存储在内存中,然后一次全部导出到 CSV。相反,我想分批或按 returned 卸载结果。以最简单的方法为准。这样,我可以从我们的服务器 运行 类似的类似 CMD,而不会使我的服务器陷入困境 运行 正在运行脚本,其内存目前处于 99% 的负载,然后是 CPU 脚本完成后跳转到 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 ";"
看来下面是我需要的。
$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
}