我如何从AD或txt输出

时间:2016-08-01 14:02:37

标签: powershell powershell-v2.0

我试图通过AD out TXT对远程PC /服务器列表运行该程序,并以csv或html显示它们,如果任何人可以提供一些帮助或建议我会非常感激。

我唯一的限制是我的所有机器只运行PowerShell v2

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | 
 Format-Table –AutoSize

2 个答案:

答案 0 :(得分:1)

您想获取该命令的输出并将其放入文件中吗? PowerShell有很多工具可以做到这一点。但是,您需要先删除Format-Table命令。

请参阅,Format-Table是关于使您的命令输出在PowerShell窗口中看起来非常好,因此它有很多硬回车,并且在其中定义了对控制台有意义的列和事物,但在导出时看起来像垃圾。

对于这样的数据,我认为逗号分离价值可能是要走的路。

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | 
    Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | 
        Export-CSV -NoTypeInfo -Path \\server\share\$($env:ComputerName)_Programs.csv

此示例将导出CSV,省略PowerShell通常使用-NoTypeInformation开关添加的导入辅助信息。我认为知道制作文件的计算机的名称是有用的,这就是它将要做的事情。编辑-Path以指向具有共享的服务器,然后离开。你最终会得到这样的文件:

  • ComputerA_Programs.Csv
  • ComputerB_Programs.Csv
  • ComputerC_Programs.Csv

答案 1 :(得分:1)

如果您想从所有广告计算机中提取

ForEach ($COMPUTER in (Get-ADComputer -Filter *  | Select-Object -ExpandProperty Name)) 
{if(!(Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet))
{write-host "cannot reach $computer" -f red}

else{Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Export-CSV -NoTypeInfo -Path "\\server\share$\$Computer_Programs.csv" -NoTypeInformation}}

如果您有文本列表中的计算机

Foreach ($computer in ($computers= Get-Content "c:\Computers.txt"   ))
{if(!(Test-Connection -cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet))
{write-host "cannot reach $computer" -f red}

else{

 Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
    Export-CSV -NoTypeInfo -Path "\\server\share$\$Computer_Programs.csv" -NoTypeInformation

}}