如何在其他地方使用Powershell

时间:2018-10-17 18:35:07

标签: powershell if-statement pipeline

我正在尝试搜索安装在计算机上的HotFix,并将安装了指定KB的计算机名称通过管道传输到excel工作表中,否则将没有安装KB的计算机名称通过管道传输到另一张Excel工作表中。

我已经掌握了执行该命令的基本命令,但是由于它使用了%(foreach)命令,因此它将找到或未找到的每个KB都将机器名附加到excel工作表中,我最终重复很多。

如何获取此代码,以便对所有知识库中的所有搜索而不是针对每个知识库中的单个内容追加单个条目?

Get-HotFix | %{if($_.HotFixID -match "KB2687455"){(get-wmiobject win32_computersystem).name | Out-File C:\Installed.txt -append}` else{(get-wmiobject win32_computersystem).name | Out-File C:\NotInstalled.txt -Append}}

编辑:

我找到了解决方法。我没有尝试在命令行类型的代码中执行此操作,而是重新编写了代码,并且令人惊讶地起作用了。如果您发现此代码有任何潜在问题,请告诉我。

if (Get-HotFix |?{$_.HotFixID -match "KB2687455"}) {
    (get-wmiobject win32_computersystem).name | out-file C:\Installed.txt
}
else {
    (get-wmiobject win32_computersystem).name | out-file C:\NotInstalled.txt
}

1 个答案:

答案 0 :(得分:2)

您正在遍历已安装的修补程序,并在看起来每个您想做的事情就是写给定机器是否已安装修补程序的情况下为每个修补程序写入结果。我假设您将在多台计算机上运行此程序,并且输出文件将在网络共享上。

您需要在初次通过后突破ELSE限制:

requirements.txt