2016-09-12 2 views
0

私は共通のログフォルダのセットを持つサーバーがたくさんあります。 UNCのルートパスを指定すると、必要なログファイルを見つけるためのスクリプトが用意されています。 私はパスダウンしたフォルダである「サービス」に基づいてそれらをソートする方法を見つけ出すように見えることはできませんが、例えば私のスクリプトがUNCの特定のフォルダごとのファイルの並べ替えを並べ替えます。

\\Server1\C$\Logs\ServiceA\Logs\File.log 
\\Server1\C$\Logs\ServiceC\Logs\File.log 
\\Server2\C$\Logs\ServiceB\Logs\File.log 
\\Server2\C$\Logs\ServiceD\Logs\File.log

の下に戻りますどのように私は 'でアルファベット順に、これらの結果を並べ替えることができサービス 'フォルダ?

私は分割、並べ替え、結合を把握しているようです。

答えて

0

Sort-Objectの基準をスクリプトブロックとして指定できます。ここでは、考慮したくないものの入力を取り除くことができます。

... | Sort-Object { $_ -replace '.*\\(Service[^\\]*)\\.*', '$1' } 

又はこのような(すべてのUNCパスが同一の構造を有する場合):私は「{([URI] $を_)を使用し、

... | Sort-Object { ([uri]$_).Segments[3] } 
+0

素晴らしいセグメント【。このような3]} "それは素晴らしかった。ありがとうございました。 – user3300840

+0

'[uri] '\\ Server1 \ C $ \ Logs \ ServiceA \ Logs \ File.log'をPowerShellコンソールに貼り付け、出力を確認します。 –

+0

あまりにも説明をありがとう。私は毎日何か新しいことを学びます。 – user3300840

0
$Uris = '\\Server2\C$\Logs\ServiceD\Logs\File.log', 
'\\Server1\C$\Logs\ServiceC\Logs\File.log', 
'\\Server1\C$\Logs\ServiceA\Logs\File.log', 
'\\Server2\C$\Logs\ServiceB\Logs\File.log' 
$Uris | sort {([uri]$_).segments[3]} 
関連する問題