1

デバイスなどのインストールでセットアップ プロセスが完了し、OS がロードされると、sysprep された vhd が接続された新しく構築された VM を起動するシナリオを実行しています。このプロセス全体が終了し、VM に IP が割り当てられるまで待ちたいと思います。 DHCP 経由のアドレス。

PS C:\Users\Administrator> Start-VM -Name dv.VMWIN2K8R2-3.Hng
PS C:\Users\Administrator> while ((Get-VM -Name dv.VMWIN2K8R2-3.Hng | select -ExpandProperty networkadapters).ipaddress[0] -match $null)

 {

 Start-Sleep 3

 Write-Host "Waiting to Acquire IP Address" -ForegroundColor green

 }

$ipaddress=(Get-VM -Name dv.VMWIN2K8R2-2.Hng | select -ExpandProperty networkadapters).ipaddresses[0]

Write-Host "VM has acquired an IPAddress of $ipaddress"

上記のスニペットを試してみましたが、while ループが実行されませんでした。VM がシャットダウンしている間、IP アドレス パラメータが空白になっていることに気付きました。そのため、Null が表示され、VM を起動し、サーバーが IP を取得するまで一致させることを考えました。 DHCP でアドレスを取得すると、while ループを終了し、コンソールに IP アドレスを出力する必要があります。

4

3 に答える 3

0

こんにちは皆さん、問題を解決できました。Get-VMNetworkAdapter コマンドレットを使用して問題を解決しました。

while (((Get-VMNetworkAdapter $vmname | select -ExpandProperty ipaddresses) -eq $null -or ((Get-VMNetworkAdapter $vmname | select -ExpandProperty ipaddresses) -match "169.")))

{ 

Write-Progress -Activity "Waiting for VM to Aquire an IPAddress" 

}
于 2012-11-12T11:42:53.617 に答える
0

ネットワーク スタックがない場合、アドレスはなく、配列が存在しないことがわかると思います。クリスは正しい道を進んでいます。あなたがしていることをする必要はないと思いますが、最初に ipaddress がプロパティであるか、配列であるか、その項目の値を確認する前に少なくとも 1 つの項目があるかどうかを確認してください。

于 2012-11-06T22:51:39.683 に答える
0

IP はおそらく null ではないため、本来あるべきことを正確に行っています。IP はおそらく 169.254.xx であるか、少なくとも DHCP を取得する前に私に起こったことです。アドレスを取得した後に持つべきアドレスの最初のオクテットを選択して、それを使用するのはどうですか?

編集:投稿を読み直した後、思ったように169ではないかもしれません。私のアドバイスはまだ適用されます。次のようなものを使用してみてください。 While (!($ip -like "10.*")

于 2012-11-05T16:26:02.840 に答える