PowerShell新手,迄今为止的丰富经验。如何格式化以下cmd管道以将屏幕显示为单行,元素以;
分隔(以便轻松复制/粘贴到Outlook中)</ p>
PS C:\Users\amrgro-dennem04> get-adgroupmember -Identity "gbl-intel-l3-u" -Recursive|get-aduser -properties Mail|select-object Name
Name
----
AMRCVW-EDELSI
AMRMOP-REITES
amrmop-kruges
基本上,希望输出看起来像这样:
AMRCVW-EDELSI;AMRMOP-REITES;amrmop-kruges
答案 0 :(得分:4)
尝试:
(Get-ADGroupMember "gbl-intel-l3-u" -Recursive| Get-ADUser -Properties Mail).Name -join ';'
鉴于您不需要-Properties
参数,因为您没有使用.Mail
属性,您可以简化为:
(Get-ADGroupMember "gbl-intel-l3-u" -Recursive| Get-ADUser).Name -join ';'
鉴于您只访问.Name
属性而未按成员类型进行过滤:
(Get-ADGroupMember "gbl-intel-l3-u" -Recursive).Name -join ';'
如果您使用的是PSv5.1或更高版本(在Windows上),您可以将上述命令传送到Set-Clipboard
(... | Set-Clipboard
),以将生成的文本复制到剪贴板。
在较低的PS版本中,您可以转而使用外部clip.exe
实用程序(... | clip
),但请注意,这总是会附加一个换行符,并且您可能会遇到编码问题。
注意:
在PSv3 +中,只需在集合本身上使用.<propertyName>
即可提取集合的元素的属性值。
@( [pscustomobject] @{ one = '1a' }, [pscustomobject] @{ one = '1b' } ).one
会产生数组@( '1a', '1b' )
-join ';'
然后将结果属性值数组与;
作为分隔符连接,以形成单个输出字符串。
答案 1 :(得分:0)
像这样的事情应该有所帮助,这是一个带有两个命令链接在一起的衬板:
$test = get-adgroupmember -Identity "gbl-intel-l3-u" -Recursive|get-aduser -properties Mail|select-object Name ; $test -join '; ';