none
ベアメタルリカバリー時に VLAN 設定したい RRS feed

  • 質問

  • 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 設定必要なネットワークでベアメタルリカバリーできますでしょうか。

    何か策が有りましたら教えて頂けますと幸いです。

    2015年6月16日 8:55

回答

  • チャブーンです。

    おっしゃる設定ですが、おそらく以下の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が設定できるのかどうか、も含めた確認が必要です)。

    注意:残念ながら、私の環境では値は反映できませんでした。


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。




    2015年6月16日 11:46
    モデレータ

すべての返信

  • チャブーンです。

    おっしゃる設定ですが、おそらく以下の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が設定できるのかどうか、も含めた確認が必要です)。

    注意:残念ながら、私の環境では値は反映できませんでした。


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。




    2015年6月16日 11:46
    モデレータ
  • 情報ありがとうございます。

    現状 netsh と Set-NetAdapter 以外に思いつかなかったのでとても助かります。

    wmic コマンドにそのような機能があったとは知りませんでした。

    明日にでも再トライしてみます。

    ありがとうございました。

    2015年6月16日 12:19
  • 教えて頂きました wmic コマンドを試してみました。

    結果としては 残念ながら思うように行きませんでした。

    Windows Server 2012 R2 インストールメディアで起動したときの環境だとどうやら
    "MSFT_NetAdapter" なるパスが無いようで、「無効な名前空間」としてはじかれてしまいました。

    Windows PE に PowerShell 組み込む方も少し状況改善したのですが結果こちらも "MSFT_NetAdapter" の名前空間が
    無いとかで結局ダメでした。

    wpeinit 後、ネットワークアダプターが認識された後に regedit を開き、 VLAN キーワードで検索すると VLAN ID の項目を発見。
    これを編集し、netsh interface set interface イーサネット disable / 同 enable を試したところ、

    所定の VLAN と通信できるようになりましたので、今回はこれで良い事にしたいと思います。
    レジストリエディターでどこのツリーを見れば良いかを判断する方法、編集している場所が有ってるかどうかを確認する方法が
    現状未確定ながら通信できるようには出来たので結果オーライとしたいと思います。

    ありがとうございました。

    2015年6月17日 9:10