我正在使用PowerShell中的以下命令返回Active Directory中通讯组的邮件属性。
Get-ADGroup $GroupName -Properties Mail | Select-Object Mail | Format-Wide
输出看起来像(用于表示空格的星号):
*
*
mygroup@mycompany.com
*
*
有什么方法可以删除输出开头和结尾添加的空格?
答案 0 :(得分:6)
我认为这应该有用(V2):
(Get-ADGroup $GroupName -Properties Mail | Select-Object Mail | Format-Wide | out-string).split("`n") -match '\S'
编辑:这种方式比它需要的更复杂。
(Get-ADGroup $GroupName -Properties Mail | Select-Object Mail | Format-Wide | Out-String).trim()
答案 1 :(得分:0)
这就是PowerShell格式输出的方式。我曾几次抱怨输出前后多余的空白行。如果你想避免这种情况,那么你自己格式化输出。你可以这样做:
$res = @(Get-ADGroup $GroupName -Properties Mail | Select-Object Mail)
for ($i = 0; $i -lt $res.Length - 1 + 4; $i += 4) {
"{0,-28} {1,-28} {2,-28} {3,-28}" -f $res[$i].Mail,$res[$i+1].Mail,$res[$i+2].Mail,$res[$i+3].Mail
}
这假设您当前的控制台宽度为120个字符。如果是80,请将上面的-28
更改为-18
。
所有这一切,如果命令只返回一个对象,为什么不这样做:
(Get-ADGroup $GroupName -Properties Mail).Mail
Select-Object Mail
,Format-Wide
和Out-String
不是必需的。哎呀,使用PowerShell V3,即使命令返回多个对象,它也能正常工作。
答案 2 :(得分:0)
在类似的情况下,选中的答案中的示例组合对我有用:
... Format-Table | Out-String).split("`n").trim()
重新阅读原始问题后,看来我有另一个问题要解决。我正在寻找一种在输出行的 end 处修剪空白的方法。经过检查的答案使我尝试了上面的代码,这些代码确实可以满足我的需求。