如何在Powershell中将对象的属性转换为字符串

时间:2011-07-14 20:08:18

标签: string object powershell properties

我对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),但它都没有为我做。任何帮助将不胜感激。

2 个答案:

答案 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
    ...
}