Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PowerShell输出中删除空白_Powershell_Active Directory - Fatal编程技术网

从PowerShell输出中删除空白

从PowerShell输出中删除空白,powershell,active-directory,Powershell,Active Directory,我在PowerShell中使用下面的命令返回Active Directory中通讯组的mail属性 Get-ADGroup $GroupName -Properties Mail | Select-Object Mail | Format-Wide 输出如下所示(用于表示空白的星号): 是否有任何方法可以删除在输出开始和结束时添加的空白?我认为这应该有效(V2): 编辑:这比需要的要复杂得多 (Get-ADGroup $GroupName -Properties Mail | Select-O

我在PowerShell中使用下面的命令返回Active Directory中通讯组的mail属性

Get-ADGroup $GroupName -Properties Mail | Select-Object Mail | Format-Wide
输出如下所示(用于表示空白的星号):

是否有任何方法可以删除在输出开始和结束时添加的空白?

我认为这应该有效(V2):

编辑:这比需要的要复杂得多

(Get-ADGroup $GroupName -Properties Mail | Select-Object Mail | Format-Wide | Out-String).trim()

这就是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

顺便说一句,这里的关键点是PowerShell处理对象,当它将这些对象呈现到屏幕上时,它有一个格式化引擎,可以确定输出前后的空行。如果您不喜欢PowerShell的默认格式,您可以随意设置对象的格式(显示您想要的任何属性),但这需要更多的工作

综上所述,如果命令只返回一个对象,为什么不这样做:

(Get-ADGroup $GroupName -Properties Mail).Mail

选择对象邮件
格式范围
输出字符串
不是必需的。见鬼,对于PowerShell V3,即使命令返回多个对象,这也会起作用。

选中答案中的示例组合在类似情况下对我起作用:

 ... Format-Table | Out-String).split("`n").trim()

在重读了原来的问题之后,我似乎有一个不同的问题要解决。我正在寻找一种从输出行的端修剪空白的方法。勾选的答案让我尝试了上面的代码,它实现了我想要的功能。

输出没有变化:-(我尝试了您的解决方案,但收到以下错误:无法索引到System.Management.Automation.PSObject类型的对象。您只返回一个结果?确定使用更新的答案重试。如果
get-ADGroup$GroupName-Properties Mail | Select object Mail
不返回任何内容,则会发生这种情况。键入
$res[0]
。如果该命令不输出任何内容,则Get-ADGroup命令将不返回任何内容。您是否仍正确定义了$GroupName?无论如何,我在测试Get进程时使用了属性名称。将属性更改为Mail,因此它现在应该可以工作。这将从开始处删除两行空行,正确显示电子邮件,但仅显示r从末尾移动两个空行中的一个。
(Get-ADGroup $GroupName -Properties Mail).Mail
 ... Format-Table | Out-String).split("`n").trim()