我希望有人可以提供帮助。 我试图操纵由PowerShell创建的文件。 我设法得到了我想要的最终结果,但我确信如果只有一个命令会更容易。
# Invoke the Exchange Snapping ( make sure you are Exchange Admin to do it SO)
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
#Create a file with list of DL in the organization
Get-DistributionGroup | Select-Object Name | Out-File C:\Pre_DLGroups.txt
$content = Get-Content C:\Pre_DLGroups.txt
#Remove the 3 first lines of the file that you dont need it
$content | Select-Object -Skip 3 | Out-file C:\DLGroups.txt
#Trim the space in the end and crate the Final file
Get-Content C:\DLGroups.txt | Foreach {$_.TrimEnd()} | Set-Content c:\FinalDLGroup.txt
是否可以在单个文件中生成最终结果而不是创建3? 欢呼声
埃尔顿
答案 0 :(得分:1)
您可以在管道中发送内容,而无需将其写入文件。您可以使用括号对某些cmdlet和/或函数集的输出进行分组,然后将输出通过管道传递到预期的cmdlet。
这可以全部应用于一行,但出于格式化原因,我在此处将它写在多行上。 Out-String
的添加是一种安全措施,可确保您打算修剪的任何输出都可以实际修剪。
由于我们不再从文本文件中获取此内容,因此powershell可能会返回一个不理解TrimEnd()
的对象,因此我们需要做好准备。
(Get-DistributionGroup | Select-Object Name) |
Out-String |
Select-Object -Skip 3 |
Foreach {$_.TrimEnd()} |
Set-Content c:\FinalDLGroup.txt
但是,更小的解决方案只需要拉动每个名称并直接操作它。我在这里使用%
作为Foreach-Object
的别名。这个例子使用Get-ChildItem
,我在当前目录中有一些名为test的文件:
(Get-ChildItem test*) |
% { $_.Name.TrimEnd() } |
Set-Content c:\output.txt
答案 1 :(得分:0)
Get-DistributionGroup |
Select-Object -ExpandProperty Name -Skip 3 |
Set-Content c:\FinalDLGroup.txt