我该如何编写一个powershell脚本,ping AD,输出在线系统的TXT,然后使用该文件输出已安装软件的列表?&l



我正在尝试编写一个powershell脚本,该脚本将Ping每个AD中的OU中的主机名,输出在线主机名的txt文件,然后使用get - wmiobject获得每个在线系统上的软件列表。我试过了,我似乎无法弄清楚如何将ping系统输出到主机名的txt文件,这样我就可以使用该文件创建软件列表。我对Powershell几乎一无所知,所以我一直试图偷和借,但不知道怎么让它工作。这是我尝试过的。如有任何帮助,我将不胜感激。

Import-Module active*
$rtn = $null
Get-ADComputer -Filter * -Properties * -searchbase "OU=EnterOUstructurehere" |
ForEach-Object {
$rtn = Test-Connection -CN $_.dnshostname -Count 1 -BufferSize 16 -Quiet
IF($rtn -match ‘True’) {write-host -ForegroundColor green $_.dnshostname}
ELSE { Write-host -ForegroundColor red $_.dnshostname }
}

使用Out-file输出名为computers的txt文件。使用Get to从computer.txt文件中取出,然后:

ForEach-Object {Get-WmiObject -Class Win32_Product -Computer $_.Name} | Select-Object Name, Version | Sort-Object Name | Export-CSV "C:Userssteven.e.hendricksOneDrive - US ArmyDesktopSoftware InventorySoftwareInventoryfile.csv" -Append -NoTypeInformation

首先,强制性建议:

  • 在PowerShell v3(2012年9月发布)中,CIM cmdlet(例如Get-CimInstance)取代了WMI cmdlet(例如Get-WmiObject)。因此,应该避免使用WMI cmlet,尤其是因为PowerShell (Core) v6+(未来所有的努力都将集中在此)甚至不再具有它们。注意,WMI仍然是CIM cmdlet的基础。要了解更多信息,请参阅此回答。

  • 但是,请注意,CIM cmdlet使用与PowerShell的远程处理相同的远程处理基础结构,这与WMI cmdlet的远程处理不同。

您可能正在寻找这样的内容:

Get-ADComputer -Filter * -Properties * -searchbase "OU=EnterOUstructurehere" |
Where-Object { Test-Connection -CN $_.dnshostname -Count 1 -BufferSize 16 -Quiet } |
ForEach-Object {
Get-WmiObject -Class Win32_Product -Computer $_.Name | 
Select-Object Name, Version | 
Sort-Object Name
} |
Export-Csv -NoTypeInformation "C:pathtoSoftwareInventoryfile.csv"

但是,请注意,您可能需要添加另一个属性来标识每个输出对象中的计算机名称。

还可以通过将计算机名称的数组传递给单个Get-WmiObject调用

来加快并行处理的操作速度:
$onlineComputers = 
Get-ADComputer -Filter * -Properties * -searchbase "OU=EnterOUstructurehere" |
Where-Object { Test-Connection -CN $_.dnshostname -Count 1 -BufferSize 16 -Quiet }
Get-WmiObject -Class Win32_Product -Computer $onlineComputers.Name | 
Select-Object PSComputerName, Name, Version | 
Sort-Object PSComputerName, Name |
Export-Csv -NoTypeInformation "C:pathtoSoftwareInventoryfile.csv"

最新更新