我对PHP,Javascript等非常熟悉,但我是Powershell的新手。我正在尝试从活动目录中的所有计算机获取IP地址和Mac地址。我遇到了一个脚本,它获取了一个带有所有计算机名称的对象,并通过foreach循环列出它们。在该循环中,我正在尝试运行以下内容:
$colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" `
comp $objComputer.name -filter "IpEnabled = TRUE"
显然,这不起作用,因为它无法从管道中获取数据。是否需要获取name属性并将其转换为在Get-WmiObject中使用的字符串变量?我已经尝试使用$ objComputer.name声明一个字符串变量作为值并尝试$($ objComputer.name),但它都没有为我做。任何帮助将不胜感激。
答案 0 :(得分:1)
我认为你需要在comp ...前面连字符。
$colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp $objComputer.name -filter "IpEnabled = TRUE"
可能是复制和粘贴错误......
虽然这对我有用(使用点):
$colItems =GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp . -filter "IpEnabled = TRUE"
使用$ objComputer虽然你可以这样做
$objComputer = @{ "name" = "." }
马特
答案 1 :(得分:0)
不幸的是,Get-WmiObject不接受管道输入。传递$ objComputer.name的Altough完全有效(只要$ objComputer是一个具有名称成员的对象),您可以将名称值赋给vraible并将该变量传递给ComputerName属性。
foreach($objComputer $computers)
{
$name = $objComputer.name
$colItems = GWMI -cl Win32_NetworkAdapterConfiguration -comp $name -filter "IpEnabled = TRUE"
$colItems
...
}