首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Get-WMIObject包含计算机名

Get-WMIObject包含计算机名
EN

Stack Overflow用户
提问于 2015-11-11 07:31:03
回答 2查看 5K关注 0票数 1

我正在尝试一个脚本来远程获取服务器上安装的软件。问题是我想让它输出某些属性,包括计算机名称,但我似乎不知道如何插入名称。

这是我到目前为止所做的。

代码语言:javascript
复制
$servers = Get-QADComputer -SearchRoot "OU=servers,OU=mydomain:-),DC=COM" | Select Name

当然,...which运行得很好。然后..。

代码语言:javascript
复制
$servers | % {Get-WMIObject -Class Win32Reg_AddREmovePrograms} | select Displayname,Version,InstallDate,PSComputerName

..。它提供了安装在该OU中所有服务器上的软件的完整列表,但PSComputerName变成了“我的电脑”(运行查询的计算机,而不是要查询的系统的计算机名)。目标是在软件的每个行项目上安装软件的服务器名。我问过Google教授,似乎看不到任何有帮助的东西(或者我能理解的任何东西)。

希望这是有意义的。半业余的PS脚本编写者,所以希望这对你们来说很容易。提前感谢您的帮助

EN

回答 2

Stack Overflow用户

发布于 2015-11-11 07:37:08

由于从WMI调用返回的对象不包含发出请求的计算机,因此您需要在include your ForEach-Object (%)块中自己包含它。您可以使用Add-Member自己添加它,然后像现在一样在外部执行Select-Object

代码语言:javascript
复制
$servers | % {
    Get-WMIObject -Class Win32Reg_AddREmovePrograms -ComputerName $_ |
    Add-Member -MemberType NoteProperty -Name ComputerName -Value $_ -PassThru
} | select Displayname,Version,InstallDate,ComputerName

另一种方法是将Select-Object移动到块内部,并在其中执行此操作,方法是使用哈希表动态创建一个新属性:

代码语言:javascript
复制
$servers | % {
    Get-WMIObject -Class Win32Reg_AddREmovePrograms -computername $_ |
    Select-Object Displayname,Version,InstallDate,@{Name='ComputerName';Expression={$_}}
}
票数 1
EN

Stack Overflow用户

发布于 2015-11-11 13:38:24

您的命令:

代码语言:javascript
复制
Get-WMIObject -Class Win32Reg_AddREmovePrograms

没有指定要查询的计算机,因此它只查询正在执行的计算机命令。因此,PSComputerName显示MY COMPUTER,因为MY COMPUTER是正在查询的计算机。必须为Get-WMIObject cmdlet指定-ComputerName参数才能查询特定计算机。和cmdlet参数接受计算机名数组,因此您可以将计算机名数组放入其中,而不是使用ForEach-Object -ComputerName并一次查询一台计算机。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33641649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档