如何在out-file中正确使用$ _?这是我的代码:
get-content computers.txt | Where {$_ -AND (Test-Connection $_ -Quiet)} | foreach {Get-Hotfix -computername $_} | Select CSName,Description,HotFixID,InstalledBy,InstalledOn | convertto-csv | out-file "C:\$_.csv"
我正在尝试为文本文件中列出的所有计算机执行get-hotfix,然后我希望将它们导出为CSV,并将计算机名称作为文件名。
答案 0 :(得分:1)
您需要一个管道来处理computers.txt文件,并在foreach
内嵌套一个管道来处理每台计算机的修补程序列表:
get-content .\computers.txt | Where {$_ -AND (Test-Connection $_ -Quiet)} | foreach { Get-Hotfix -computername $_ | Select CSName,Description,HotFixID,InstalledBy,InstalledOn | convertto-csv | out-file "C:\$_.csv" }
修改:将computers.txt
更改为.\computers.txt
,因为这是powershell中本地路径所必需的
答案 1 :(得分:0)
我可以看到: get-content。\ computers.txt |其中{$ _ -AND(Test-Connection $ _ -Quiet)} | foreach {Get-Hotfix -id KB4012212 -computername $ _ |选择CSName,Description,HotFixID,InstalledBy,InstalledOn | convertto-csv | out-file“C:\ $ _。csv”} 我只能看到安装了哪台PC(KB4012212)。 可以看到以下内容
CSNAME修复(Inst / NotInst)
PC1 FIxInstalled
PC2 FixNotinstalled
PC3 FixnotInstalled
.. .. 等
答案 2 :(得分:0)
我摸索了一段时间,直到在使用此组合之前,我在网上都找不到任何有效的工具。
我使用的方法是该线程,但是速度太慢,所以我想了解更多有关使用作业的信息,因此最终在Windows 7 PS Ver 4上为我工作。 所有其他选项要么太慢,要么没有从远程系统返回数据。
$VMs = get-content C:\WinVms.txt #Generate your hostnames list however you deem best.
foreach ($vm in $vms)
{
Write-Host "Attempting to get hotfixes on:" $vm
invoke-command -computername $vm -ScriptBlock {start-job -scriptblock {(get-hotfix | sort installedon)[-1]} | wait-job | receive-job} -AsJob
}
start-sleep 60 # give it a minute to complete
get-job | ? { $_.state -eq "Completed"} | receive-job -keep | export-csv c:\temp\win-patch.csv
您也可以像这样检查失败:
get-job | ? { $_.state -eq "Failed"}