将条件输出列添加到Powershell Active Directory查询

时间:2014-09-15 07:51:52

标签: powershell active-directory

我正在编写一个Powershell脚本来查询Active Directory信息,到目前为止它看起来像这样:

$result = Get-ADComputer -Filter {Enabled -eq "True"} -Server SERVERNAME 
    -Properties whenChanged,extensionAttribute14
$result | select DistinguishedName,SamAccountName,extensionAttribute14,
    @{N='When Changed'; E={($_.whenChanged).ToString("dd.MM.yyyy")}}

Active Directory中的extensionAttribute14字段包含一些二进制字符串形式的客户端特定标志。

例如: 0100表示​​ - >客户满足条件A. 0101表示 - >客户满足条件B

我需要做的是在select语句中添加一个单独的列,用于转换ExtensionAttribute14字段的结果。

示例输出:

DistinguishedName,SamAccountName,extensionAttribute14,extensionAttribute14Translated,When Changed CN=CN....,SAM.....,0100,ConditionA,08.09.2014

如何更改select语句以实现此目的?

1 个答案:

答案 0 :(得分:1)

一种解决方案是使用哈希表,其中包含您在Select-Object语句中即时评估的结果:

$flags = @{"0100" = "Client meets condition A"; 
    "0101" = "Client meets condition B"}

$result = Get-ADComputer -Filter {Enabled -eq "True"} -Server SERVERNAME 
    -Properties whenChanged,extensionAttribute14  |
    Select-Object DistinguishedName,SamAccountName,
    @{N="extensionAttribute14Translated"; E={$flags.Item($_.extensionAttribute14)}},
    @{N='When Changed'; E={($_.whenChanged).ToString("dd.MM.yyyy")}}