2017-05-04 3 views
1

私はこれで一晩中作業しています。私は助けが必要だと思っています:-) Powershellには新しく、多くの研究をしましたが、正解、ここの誰かが私を助けてくれることを願っています。CSVファイルを使用してリモートマシン上で実行されるコマンドをパラメータ化する

私がしようとしているのは、いくつかのサーバーにIISアプリケーションを展開することです。 私は私の場合は、次のコードで「既定のWebサイト」を使用し、Webサイトにアプリケーションを追加するために管理:

Get-Content c:\scripts\servers.txt | Foreach { Invoke-Command -ComputerName $_ {Import-Module WebAdministration ; New-WebApplication -Site "Default Web Site" -Name TestRico2 -PhysicalPath C:\inetpub\wwwroot\} } 

これは、て、Servers.txtの内容です:

WEB01
WEB02
WEB03

これは実際にうまくいきます。

-Site "Default Web Site" 
-Name TestRico2 
-PhysicalPath C:\inetpub\wwwroot\ 

だから、私は、CSVは以下のようにファイルを持つようにしたい:私はもう見当もつかない

server,site,name,path 
WEB01,Default Web Site,Application-name,c:\inetpub\wwwroot\ 
WEB02,Default Web Site,Application-name2,c:\inetpub\wwwroot2\ 

、そこですが、私が達成したい事は、他の項目が動的にもあるということです誰が助けてくれるの?

答えて

1

Import-Csvは、CSVファイルを読み取り、各入力行をカスタムオブジェクトとして表します。プロパティの名前はCSV列ヘッダーの名前で、値はそれぞれの行の列値です。

したがって、代わりGet-ContentImport-Csvを使用して、手で入力されたオブジェクトのプロパティとして関心の値にアクセス、$_:特性$_.site$_.name$_.path引数として渡される方法

Import-Csv c:\scripts\servers.csv | ForEach-Object { 
    Invoke-Command ComputerName $_.server { 
    param($site, $name, $path) 
    Import-Module WebAdministration; 
    New-WebApplication -Site $site -Name $name -PhysicalPath $path 
    } -Args $_.site, $_.name, $_.path 
} 

注スクリプトブロックがターゲットマシンで実行されているため、に渡されたスクリプトブロック。ローカル変数の変数はありません。痛いPSV3 +以上で

、通過引数の代わりに、スクリプトブロック内に直接ローカル変数を参照する$using:スコープを使用することである -
Get-Help about_Remote_Variables参照。

関連する問題