powershellにて以下を試みているのですが、③で失敗してしまいます。
①ホスト名とIPが記載されているjsonファイルを読みむ
②読み込んだ値を変数に入れる
③スクリプトファイルを実行する変数の、スクリプトファイルの引数として値を渡す
④③にて作成した変数を、更に別の変数で使用する
#①ホスト名とIPが記載されているjsonファイルを読みむ #CorrespondenceTable.json { "Host1": { "IP": "x.x.x.x", "Hostname": "Host1" }, "Host2": { "IP": "y.y.y.y", "Hostname": "Host2" }, }
#②読み込んだ値を変数に入れる $data = Get-content -Path "C:\CorrespondenceTable.json" | ConvertFrom-Json #変換後の確認 echo $data.Host1.IP →x.x.x.x echo $data.Host1.Hostname →Host1 echo $data.Host2.IP →y.y.y.y echo $data.Host2.Hostname →Host2
#③スクリプトファイルを実行する変数の、スクリプトファイルの引数として値を渡す $1 = "hoge.ps1 $data.Host1.Hostname $data.Host1.IP $data.Host2.Hostname $data.Host2.IP" #echoで確認すると、以下のようになってしまう。 echo $1 → hoge.ps1 @{Host1=; Host2=;};Host1.Hostname @{Host1=; Host2=;};Host1.IP @{Host1=; Host2=;};$data.Host2.Hostname @{Host1=; Host2=;}; $data.Host2.IP" #変数を{}で囲ってみる $1 = "hoge.ps1 ${data.Host1.Hostname} ${data.Host1.IP} ${data.Host2.Hostname} ${data.Host2.IP} #echoで確認すると、引数部分が消えてしまっている。 echo $1 → hoge.ps1
③にて、echoで確認した際に以下のように返ってくると想定しておりました。
hoge.ps1 Host1 x.x.x.x Host2 y.y.y.y
想定していた形のように変数を引数として渡すには、どのように記述をすれば良いでしょうか?
試してないんで回答にはしないけど最終的に欲しいのが文字列なら、
1.引数部分を文字列として空白区切りで連結する
2.スクリプトファイル名と1を空白区切りで連結する
というステップを踏むだけだと思うんで、シンプルにやってみりゃ良さそうだけど。
文字列の連結方法はググればいくらでも出てくるし、一気にやるんじゃなくて要素を分解して確認しながら作ればどこがマズいのかはすぐわかるんじゃない。
回答1件
あなたの回答
tips
プレビュー