在powershell中从对象数组创建一个String数组

时间:2017-08-19 23:09:30

标签: arrays windows powershell active-directory tostring

我获取这些计算机的名称并将它们放入一个数组中。现在我想要做的是将它们转换为字符串数组,以便能够使用Get-ADComputer for循环或使用foreach循环检查它们所处的策略(您能推荐使用哪一个)

$global:arrComputers = @()

    $computerStrings = Get-ADComputer -Filter 'SamAccountName -like "*Name*"' | Select -Expand Name

    foreach ($line in $computerStrings)
    {
        $a = $line.ToString()
        $b = $a.split()

        $temp = @{}
        $temp = New-Object object 
        $temp | Add-Member -MemberType "noteproperty" -Name Name -Value $b[0]

        $global:arrComputers += $temp

    }

    $global:arrComputers

这是我想要运行的命令,以检查它们所在的政策

Get-ADComputer "Name" -Properties MemberOf | %{if ($_.MemberOf -like "*POLICY_NAME*") {Write-Host "ON"} else {Write-Host "NOT ON"}}

我已经测试了两个代码块,他们正在解决的问题就是将该数组转换为字符串数组。我还尝试了ToString()能够使用Get-ADComputer "Name"

循环播放它

1 个答案:

答案 0 :(得分:1)

“Get-ADComputer”返回的对象中的“memberOf”属性返回一个字符串列表,其中包含此计算机所属的每个组的专有名称。 因此,我假设当您说“这是我要运行的命令以检查它们所处的策略”时,您指的是组策略所针对的组成员身份? 下面的代码将会这样做:

$computers = @();
Get-ADComputer -Filter * -Properties Name,MemberOf | %{if ($_.MemberOf -like "*computer_group_name*") { $computers += $_.Name } }

说明: 第一行,定义一个数组$ computers 第二行,查询计算机对象属性的名称Name,MemberOf 然后,$ _。MemberOf包含字符串中的组名,将Name属性(字符串)添加到您在第1行定义的字符串数组