2016-04-19 8 views
1

現在、以下のスクリプトは動作しますが、30台以上のサーバがあり、変更が頻繁に行われるので、もっと簡単な方法であれば気になります$ServerList変数各サーバーからのインポートデータを使用します。サーバーのパスは同じで、すべてのサーバー名を持つServer.txtファイルを維持できます。 PowerShellスクリプトに行を追加することなく、必要なときに更新できる、より大きなサーバーリストを使って、これを単純化する方法はありますか?選択されたオブジェクトでサーバのインポートリストから変数を設定する

$Headers = "Extension","Server IP","Comment" 
$1 = Import-Csv "\\Server1\app\test\Stations.txt" -Header $Headers | Select-Object *, @{n='Server Name';e={'Server1'}} 
$2 = Import-Csv "\\Server2\app\test\Stations.txt" -Header $Headers | Select-Object *, @{n='Server Name';e={'Server2'}} 
$3 = Import-Csv "\\Server3\app\test\Stations.txt" -Header $Headers | Select-Object *, @{n='Server Name';e={'Server3'}} 
$4 = Import-Csv "\\Server4\app\test\Stations.txt" -Header $Headers | Select-Object *, @{n='Server Name';e={'Server4'}} 

$ServerList = $1,$2,$3,$4 

答えて

1

はい、あなたは(あなたがServer.txt最初に作成する必要があります)サーバのリストを取得するにはGet-Contentコマンドレットを使用することができます。

$Headers = "Extension","Server IP","Comment" 
$servers = Get-Content 'Your_path_to_server.txt' 
$ServerList = $servers | 
    % { $server = $_; Import-Csv ("\\{0}\app\test\Stations.txt" -f $server) -Header $Headers | 
    Select-Object *, @{n='Server Name';e={$server}} } 

今、あなたはあなたがサーバーを追加する場合、スクリプトには何も変更する必要はありません。そして、あなたはそれを反復して、現在のサーバーを使用するようにForeach-Objectコマンドレット(エイリアス%)を使用することができます。 はここで同じスクリプトですが、多分少し良くあなたのために理解するために:私はこのような何かのために使用します

$Headers = "Extension","Server IP","Comment" 
$serverNames = Get-Content 'Your_path_to_server.txt' 

$ServerList = @() 

foreach ($serverName in $serverNames) 
{ 
    $ServerList += Import-Csv "\\$serverName\app\test\Stations.txt" -Header "Extension","Server IP","Comment" | 
    Select-Object *, @{n='Server Name';e={$serverName}} 
} 
+0

最初のコードスニペットでは、フォーマット演算子は不要です。あなたは2番目にそれを削除しました。 – Matt

0

方法はそれのための関数を作ることであろう。ここにいくつかのテストされていないサンプルコードがあります。

Function Import-ServerListCSV($serverName){ 
    $Headers = "Extension","Server IP","Comment" 
    Import-Csv "\\$serverName\app\test\Stations.txt" -Header $Headers | Select-Object *, @{n='Server Name';e={$serverName}} 
} 

$ServerList = "Server1","Server2","Server3","Server4" | % {Import-ServerListCSV $_} 
関連する問題