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  
想定していた形のように、変数を引数として渡すにはどのように記述をすれば良いでしょうか？
CC BY-SA 4.0
2021-06-02T01:53:45.357
76263
2021-06-02T11:54:20.157
45602
question
powershell
powershellにてスクリプトを実行する変数の引数として変数を渡したい
いまいち読み取れなかったのですが、変数を使って、

```

    hoge.ps1 Host1 x.x.x.x Host2 y.y.y.y
    
```

を実行したい、というのが質問内容でしょうか？  
そうであれば [`Invoke-Command`](https://docs.microsoft.com/en-
us/powershell/module/microsoft.powershell.core/invoke-
command?view=powershell-5.1) を使って

```

    Invoke-Command -FilePath hoge.ps1 -ArgumentList $data.Host1.Hostname, $data.Host1.IP, $data.Host2.Hostname, $data.Host2.IP
    
```

とかでどうでしょうか。
CC BY-SA 4.0
2021-06-02T11:54:20.157
76273
2021-06-02T11:54:20.157
4236
76263
answer