arrays - 我不明白为什么我的数组会产生我无法使用的输出

标签 arrays powershell

我正在尝试创建我可以使用 Get-Computer 处理的计算机列表。 以下是创建列表的两种方法。 我不明白为什么它们不同,或者我如何才能使这两种方法的结果具有相同的值。

我的代码是:

    $ComputerList1 = "WS7-HUR-MANAGER","WS7-HUR-NURSE"
    $ComputerList2 = Get-ADComputer -Filter {Name -like "WS7-HUR*"} | Select`   Name
    Get-Variable ComputerList1 | Select Name, Value
    Get-Variable ComputerList2 | Select Name, Value

输出:

Name              Value                                           
----              -----                                           
ComputerList1     {WS7-HUR-MANAGER, WS7-HUR-NURSE}                
ComputerList2     {@{Name=WS7-HUR-MANAGER}, @{Name=WS7-HUR-NURSE}} 

最佳答案

$ComputerList1 包含一个字符串数组对象。 $ComputerList2 包含一个自定义的 PowerShell 对象,该对象由 Get-ADComputer 返回,然后过滤为仅包含它的 Name 属性。

您可以通过将每个管道传递给 Get-Member 来查看两者之间的区别。

$ComputerList1 | Get-Member
$ComputerList2 | Get-Member

根据其他答案,您可以使用 Select-Object cmdlet 的 -ExpandProperty 开关获取对象的一个​​属性并将其内容作为新对象返回这是类型。例如,如果该属性包含一个字符串,您将得到一个字符串对象。例如:

 $ComputerList2 = Get-ADComputer -Filter {Name -like "WS7-HUR*"} | Select ExpandProperty Name

或者您也可以直接访问属性并将其分配给变量:

$ComputerList2 = (Get-ADComputer -Filter {Name -like "WS7-HUR*"}).Name

关于arrays - 我不明白为什么我的数组会产生我无法使用的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226596/

相关文章:

javascript - 以数组形式返回对象的所有键或值的函数

javascript - 对象重映射问题 - 属性未定义

PowerShell中的COM接口(interface)包装器?

php - PHP 整数数组索引真的是数字吗?

c - 不带 * 的指针打印值数组中的指针

php - PHP 中的 Foreach 循环和平均值

Powershell - 将日志文件转换为 CSV

字符串中的 Powershell 管道

azure - 比较 AAD 和 ADS 之间的用户

powershell - 如何清除 VS 代码中的终端命令历史记录?