![GWMI - 通过脚本查明域控制器是物理的还是虚拟的](https://linux22.com/image/709477/GWMI%20-%20%E9%80%9A%E8%BF%87%E8%84%9A%E6%9C%AC%E6%9F%A5%E6%98%8E%E5%9F%9F%E6%8E%A7%E5%88%B6%E5%99%A8%E6%98%AF%E7%89%A9%E7%90%86%E7%9A%84%E8%BF%98%E6%98%AF%E8%99%9A%E6%8B%9F%E7%9A%84.png)
我尝试创建一个用于提取的脚本,但输出并不完全符合我的期望。
$Servers = Get-ADDomainController -Filter * | Select-Object Name
foreach($server in $servers)
{
$compsystem = gwmi -q "Select * from win32_computersystem" | Select Model
write-output $Server is $compsystem"
}
输出类似于:
@{Name=ServerName} 是 @{Model=Proliant DL360 G6}
服务器名称不同,但模型相同,所以我认为它在第一个服务器之后处于连续循环中。
有什么想法吗?
谢谢你,
答案1
您永远不会使用变量$server
,因此所有输出都来自运行脚本的本地计算机。要在实际服务器上运行该命令,您可以使用Invoke-Command
:
$servers |Foreach-Object {
$compsystem = Invoke-Command -ComputerName $_.name -ScriptBlock { gwmi -q "Select * from win32_computersystem" }
Write-Host ("{0} is {1}" -f $_.Name,$compsystem.Model)
}