トップ回答者
ベアメタルリカバリー時に VLAN 設定したい

質問
-
Windows Server バックアップで取得した(あるいは同等)のベアメタルリカバリーに利用可能な
バックアップが ネットワーク共有フォルダーに保存してあります。
例 \\backupsvr\hostname\windowsimagebackup
Windows Server 2012 R2 インストールメディアから、復元したいサーバーを起動し、
コマンドプロンプトで netsh コマンドを用いて IP アドレスを設定するところまでは出来ています。
これで大丈夫な環境の場合、インストールメディアで利用できる回復ウィザードからネットワーク共有フォルダーを
指定してリストアが正常に実行できます。
しかし、現在復元したい対象のサーバーが接続されているネットワークスイッチが VLAN タグ付きでないと通信できない
構成になっていて、IPアドレスの設定だけでは通信を開始できません。
この状況で VLAN ID をネットワークアダプターに付与する方法を捜索中です。
どうすれば復元できるのやら、、、
netsh コマンドで VLAN ID を設定できそうなコマンドメニューが見当たりません。ネット検索してもそれらしい情報を発見できません。
Windows Server 2012 R2 なので、普通に OS が起動している場合、PowerShell で Set-NetAdapter コマンドレットを使うと
設定できそうなのですが、なんとしたことか Windows 2012 R2 インストールメディアのコマンドプロンプトからは
PowerShell を起動する術が有りません。
X:\Windows\System32\WindowsPowerShell フォルダーはあるけども実体はない。
Windows PE に PowerShell を入れ込む手順で起動メディアの作成を試みていますが、
Windows 2012 R2 インストールメディアの状態を保ったまま PowerShell Set-NetAdapter コマンドレットが動きそうな環境を
上手い事作りこめません。
Windows 2012 R2 インストールメディア環境状態を保たず、Windows PE で PowerShell が動く までは何とかいけましたが
NetAdapter モジュールが無いようで Set-NetAdapter コマンドレットはいまだ利用できず、、、
はて。どうすれば VLAN 設定必要なネットワークでベアメタルリカバリーできますでしょうか。
何か策が有りましたら教えて頂けますと幸いです。
回答
-
チャブーンです。
おっしゃる設定ですが、おそらく以下のWMI Classの[VlanID]属性を言っているのだと思います。
https://msdn.microsoft.com/en-us/library/hh968170%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
このクラスですが、あくまでOS側から見た「汎用設定」の範疇であり、ここで設定した値が反映されるかどうかは、(下位にあたる)NICドライバーの仕様に依存する、と理解しています。
そのうえでですが、無理やりpowershellをつかうのではなく、wmicを使った方が、設定そのものは簡便に行えると思います。以下のようなコマンドになるでしょう。
wmic /namespace:\\root\StandardCimv2 path MSFT_NetAdapter WHERE "name='<アダプター名>'" set VlanID='<vlanid番号>'
設定ができたことの確認は、以下のコマンドでできるのではないでしょうか。
wmic /namespace:\\root\StandardCimv2 path MSFT_NetAdapter WHERE "name='<アダプター名>'" get VlanID
コマンド結果が反映していない場合、残念ながらNICドライバーが対応していない可能性が高いので、別のやり方を探す必要があるでしょう(そもそも明示的にVlanIDが設定できるのかどうか、も含めた確認が必要です)。
注意:残念ながら、私の環境では値は反映できませんでした。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP, Moderator 2015年6月16日 11:52
- 回答の候補に設定 佐伯玲 2015年6月17日 2:13
- 回答としてマーク SHIMSOFT 2015年6月17日 9:03
すべての返信
-
チャブーンです。
おっしゃる設定ですが、おそらく以下のWMI Classの[VlanID]属性を言っているのだと思います。
https://msdn.microsoft.com/en-us/library/hh968170%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
このクラスですが、あくまでOS側から見た「汎用設定」の範疇であり、ここで設定した値が反映されるかどうかは、(下位にあたる)NICドライバーの仕様に依存する、と理解しています。
そのうえでですが、無理やりpowershellをつかうのではなく、wmicを使った方が、設定そのものは簡便に行えると思います。以下のようなコマンドになるでしょう。
wmic /namespace:\\root\StandardCimv2 path MSFT_NetAdapter WHERE "name='<アダプター名>'" set VlanID='<vlanid番号>'
設定ができたことの確認は、以下のコマンドでできるのではないでしょうか。
wmic /namespace:\\root\StandardCimv2 path MSFT_NetAdapter WHERE "name='<アダプター名>'" get VlanID
コマンド結果が反映していない場合、残念ながらNICドライバーが対応していない可能性が高いので、別のやり方を探す必要があるでしょう(そもそも明示的にVlanIDが設定できるのかどうか、も含めた確認が必要です)。
注意:残念ながら、私の環境では値は反映できませんでした。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP, Moderator 2015年6月16日 11:52
- 回答の候補に設定 佐伯玲 2015年6月17日 2:13
- 回答としてマーク SHIMSOFT 2015年6月17日 9:03
-
教えて頂きました wmic コマンドを試してみました。
結果としては 残念ながら思うように行きませんでした。
Windows Server 2012 R2 インストールメディアで起動したときの環境だとどうやら
"MSFT_NetAdapter" なるパスが無いようで、「無効な名前空間」としてはじかれてしまいました。
Windows PE に PowerShell 組み込む方も少し状況改善したのですが結果こちらも "MSFT_NetAdapter" の名前空間が
無いとかで結局ダメでした。
wpeinit 後、ネットワークアダプターが認識された後に regedit を開き、 VLAN キーワードで検索すると VLAN ID の項目を発見。
これを編集し、netsh interface set interface イーサネット disable / 同 enable を試したところ、所定の VLAN と通信できるようになりましたので、今回はこれで良い事にしたいと思います。
レジストリエディターでどこのツリーを見れば良いかを判断する方法、編集している場所が有ってるかどうかを確認する方法が
現状未確定ながら通信できるようには出来たので結果オーライとしたいと思います。ありがとうございました。