我正在编写一个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语句以实现此目的?
答案 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")}}