1

誰かが助けてくれることを願っています。powershell で作成したファイルを操作しようとしています。なんとか望みどおりの結果にたどり着きましたが、コマンドが1つだけだったらもっと簡単だと思います。

# 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を作成するのではなく、最終結果を1つのファイルにする方法はありますか? 乾杯

エルトン

4

2 に答える 2

1

ファイルに書き出すことなく、コンテンツをパイプライン経由で送信できます。かっこを使用して、コマンドレットや関数の特定のセットの出力をグループ化し、その出力を目的のコマンドレットにパイプすることができます。

これはすべて 1 行で適用できますが、書式上の理由から、ここでは複数行に分けて記述しています。の追加はOut-String、トリミングしようとしている出力が実際にトリミングできるようにするための安全対策のようなものです。

このコンテンツをテキスト ファイルから取得することはもうないため、powershell は を理解できないオブジェクトを返す可能性があるTrimEnd()ため、その準備が必要です。

(Get-DistributionGroup | Select-Object Name) | 
Out-String | 
Select-Object -Skip 3 |
Foreach {$_.TrimEnd()} | 
Set-Content c:\FinalDLGroup.txt

ただし、さらに小規模なソリューションでは、各名前を取得して直接操作するだけです。%here のエイリアスとして使用していForeach-Objectます。この例では を使用しGet-ChildItemており、現在のディレクトリに test という名前のファイルがいくつかあります。

(Get-ChildItem test*) | 
% { $_.Name.TrimEnd() } | 
Set-Content c:\output.txt
于 2013-09-03T17:13:46.983 に答える
0
Get-DistributionGroup | 
Select-Object -ExpandProperty Name -Skip 3 |
Set-Content c:\FinalDLGroup.txt
于 2013-09-04T08:42:02.013 に答える