Powershell获取安装的程序脚本不会返回计算机名称

问题描述:

我试图从一组远程服务器上获取已安装程序的列表。我能够获取程序名称,但不能返回系统名称。以下是我的脚本。Powershell获取安装的程序脚本不会返回计算机名称

$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 
    } 

下面是我的输出

enter image description here

+0

你是基于PowerShell文档自己编写的,还是从其他地方复制它?因为第一步是检查API文档以确保你正在做一些可以完成的事情,而那些告诉你没有这样的事情,因为'Systemname'是Win32_Product类:https:// msdn.microsoft。 COM/EN-US /库/ aa394378(v = vs.85)的.aspx –

首先,-ComputerName可以通过循环你要增加时间,因为利用数组,其中环将在连续取名字的数组等等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柱延伸的结果

首先建立脚本块作为查询使用

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 
} 

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