Powershell 获取安装程序脚本没有 return 计算机名

Powershell get installed program script doesn't return computer name

我正在尝试从一组远程服务器中获取已安装程序的列表。我可以获取程序名称,但不能 return 系统名称。下面是我的脚本。

$computerfile = get-content "D:\Users\Admin\Docs\PrimaryServers.txt"
ForEach ($computer in $computerfile) {
Get-WmiObject Win32_Product -ComputerName $computer |
  Select-Object SystemName,Name,Version,PackageName,Installdate,Vendor |
  Format-Table -AutoSize
  }

下面是我的输出

首先,-ComputerName 可以采用名称数组,因此通过循环您将增加时间,因为循环将是串行的,而使用计算机名数组将是并行的。

其次,最佳做法是使用 CIM cmdlet 代替 WMI cmdlet。默认情况下,它们在 WSMAN 上运行并且更易于使用。

第三,Win32_Product 强制进行一致性检查,因此阅读 Uninstall registry keys 通常更好。

最后,SystemName 不是 Get-WMIObject 返回的 属性 名称。 PSComputerName 是您正在寻找的 属性,您可以从中制作 Calculated Property

$computerfile = get-content "D:\Users\Admin\Docs\PrimaryServers.txt"
Get-CimInstance Win32_Product -ComputerName $Computerfile |
    Select-Object @{n=SystemName;e={$_.PSComputerName}},Name,Version,PackageName,Installdate,Vendor |
    Format-Table -AutoSize

另一种方法是使用 Invoke-Command,它会使用 PSComputerName 列自动扩展结果

首先构建脚本块以用作查询[=​​18=]

块 1 是我对 x32 和 x64 实现的方法。考虑将此作为替代方案,因为我对提议的实施存在一些问题。

$block1={
    # Query x64 bit applications
    $queryPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
    Get-ItemProperty $queryPath | Select-Object -Property DisplayName, Publisher, InstallDate, DisplayVersion

    # Query x32 bit applications
    $queryPath="HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
    Get-ItemProperty $queryPath | Select-Object -Property DisplayName, Publisher, InstallDate, DisplayVersion
}

Block 2 是关于这个问题的建议方法

$block2={
    Get-CimInstance Win32_Product | Select-Object Name,Version,PackageName,Installdate,Vendor
}

对于 $block1$block2 在服务器列表上远程执行

Invoke-Command -ComputerName $computernames -ScriptBlock $block1

一条记录看起来像这样

DisplayName    : Microsoft Visual C++ 2013 x86 Additional Runtime - 12.0.21005
Publisher      : Microsoft Corporation
InstallDate    : 20161202
DisplayVersion : 12.0.21005
PSComputerName : MECDEVAPP01
RunspaceId     : 4b8cc747-da25-4c6e-b108-0ca3138c0335