0

現在、仮想マシン (具体的には VMWare) の展開をマルチスレッド化しようとして問題が発生しており、次のコードを使用してそれを試みています。

接続-viserver vCenter

for($i=251; $i -le 261; $i++) {

Start-Job {Param([string]$num) New-vm -ResourcePool Storage-POCs -Name "virtual-machine-$num" -vm "newvm" -Datastore MyDataStore} -ArgumentList $i

}

このコードから現在ターミナルで取得している出力は次のとおりです。

HasMoreData   : True
StatusMessage :
Location      : localhost
Command       : Param([string]$num)
            New-vm -ResourcePool Storage-POCs -Name "virtual-machine-$num" -vm "newvm" -Datastore MyDataStore
JobStateInfo  : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : 3a6b8f27-c8d8-4386-9e58-6c1dfcfef52c
Id            : 419
Name          : Job419
ChildJobs     : {Job420}
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
State         : Running


HasMoreData   : True
StatusMessage :
Location      : localhost
Command       : Param([string]$num)
            New-vm -ResourcePool Storage-POCs -Name "virtual-machine-$num" -vm "newvm" -Datastore MyDataStore
JobStateInfo  : Running
...

$num が $i になる数値に変換されない理由を誰か教えてもらえますか?

ありがとう、アレックス

4

1 に答える 1

0

したがって、コマンドは実際には期待どおりに実行されています。Get-Job を実行すると、実行された正確なコマンドが表示されるだけです。つまり$num、値ではなく、文字列の名前として表示されます。

コマンドが実行されるまで、置換は実際には行われません。

このように、値をテキスト ファイルにダンプするだけでテストできます。

for($i=251; $i -le 261; $i++) {

Start-Job {Param([string]$num) "virtual-machine-$num">>t:\test.txt} -ArgumentList $i

}

ここで、Get-Job | を実行すると、select -expand コマンドを実行すると、次のように表示されます。

Param([string]$num) "virtual-machine-$num">>t:\test.txt
Param([string]$num) "virtual-machine-$num">>t:\test.txt
Param([string]$num) "virtual-machine-$num">>t:\test.txt
Param([string]$num) "virtual-machine-$num">>t:\test.txt
Param([string]$num) "virtual-machine-$num">>t:\test.txt
Param([string]$num) "virtual-machine-$num">>t:\test.txt

しかし、ファイルを読むと、実際に私が望んでいたことをしたことがわかります。

virtual-machine-251
virtual-machine-252
virtual-machine-253
virtual-machine-254
virtual-machine-255
virtual-machine-256
virtual-machine-257
virtual-machine-258
virtual-machine-259
virtual-machine-260
virtual-machine-261

したがって、基本的にこれは実際に機能していましたが、実際には機能しているようには見えませんでした。

于 2015-12-08T18:01:42.343 に答える