0

首先,我没有受过Powershell的正规培训,所以我写的大部分都是改编代码或者比较简单。我在检索机器的扩展属性或重新组织返回的列列表时遇到问题。

在我的组织中,PC 可以是我了解的本地 OU 的成员,也可以是我无权访问的企业 OU。扫描我的本地 OU 组不会给我我正在寻找的所有结果。我能够找到将此逻辑应用于用户和组成员资格的答案,但似乎无法使其适用于 PC。

Import-Module ActiveDirectory
$OU = "OU=Computers,OU={ORG UNIT}"
$Path = "C:\{FILE LOC}\AD-groupPClist_$(get-date -f yyyyMMdd_HHmm).csv"

$PC = ForEach ($P in (Get-ADComputer -Filter * -SearchBase $OU))
{
$Machine = Get-ADComputer $P -Properties MemberOf
$Groups = ForEach ($Group in ($Machine.MemberOf))
{
    (Get-ADGroup $Group).Name
}
$Groups = $Groups | Sort
ForEach ($Group in $Groups)
{
    New-Object PSObject -Property @{
    Group = $Group
    PCName= $Machine.Name
    }
}
}
$PC | Export-CSV $Path -NoTypeInformation

当我尝试添加 DNSHostName 列(例如)时,它显示为结果中的第一列,即使它列在第三列。在这种情况下,如果我添加了 DNSHostName,我希望输出文件是组名、PCName、DNSHostName(或其他一些属性);但按这个顺序。

4

1 回答 1

1

我做了一些修改,但这应该可以完成工作。

Import-Module ActiveDirectory
$OU = "OU=Computers,OU={ORG UNIT}"
$Path = "C:\{FILE LOC}\AD-groupPClist_$(get-date -f yyyyMMdd_HHmm).csv"

$PC = ForEach ($P in (Get-ADComputer -Filter * -SearchBase $OU -Properties MemberOf)) {
    Foreach ($Group in $P.MemberOf) {
        [PSCustomObject]@{
            Group = (Get-ADGroup $Group).Name
            PCName = $P.Name
            DNSHostName = $P.DNSHostName
        }
    }
}
$PC | Sort-Object Group | Export-Csv $Path -NoTypeInformation

关于属性或 CSV 标头的顺序,@{}指示 PowerShell 您正在使用哈希表。哈希表的默认行为是无序的。要解决此问题,您需要使用 [ordered]属性创建哈希表,或者在创建对象时仅使用[pscustomobject]类型加速器。单独的New-Object命令不能不受哈希表无序特性的影响。由于[PSCustomObject]速度更快并且没有排序问题,因此最好只使用它来支持New-Object自定义对象。

New-Object请参阅下面的使用哈希表的行为示例:

# Unordered output example

New-Object -TypeName psobject -Property `
     @{
       property3 = 'value3'
       property2 = 'value2'
       property1 = 'value1'
     }

property1 property2 property3
--------- --------- ---------
value1    value2    value3

# Example enforcing order

New-Object -TypeName psobject -Property `
     ([ordered]@{
       property3 = 'value3'
       property2 = 'value2'
       property1 = 'value1'
     })

property3 property2 property1
--------- --------- ---------
value3    value2    value1

有关哈希表的更多信息,请参阅关于哈希表。

于 2019-06-18T12:49:57.983 回答