kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Windows Server 2008 R2のHyper-V VHDをコピーする

この記事はPowerShell Advent Calendar 2014の12/6分の記事です。


PowerShell Advent Calendar 2014 : ATND

Hyper-VをPowerShellでコントロールする方法は以下の二つの方法があります。

・System Center Virtual Machine Manager(SCVMM)を使う(全OS対象)

・OS組み込みのコマンドレットを使う(Windows Server 2012以降)

これで困るのがSCVMM管理下にない、Windows Server 2008 / 2008 R2環境。めんどくさいWMIを使う必要があります。それは困るので何とかしたいということで作られたのがPSHyperVというオープンソースプロジェクト。


PowerShell Management Library for Hyper-V - Home

Windows Server 2008 / 2008 R2専用です。なぜかといえば、WMIの名前空間に互換性がないのと、2012以降は専用コマンドレットがあるためだと思います。今でもかなり使われているようでdiscussionには最近でも書き込みが見られます。

Windows Server 2012のコマンドレットと多少似ていますが、メンバーとかはかなり違うので、スクリプトをそのまま持っていくことはできないので、注意してください。ということで、サンプル代わりのバックアップ対象のVMのVHDを指定のフォルダにコピーするというスクリプトです。

素直にexport-vm使ってもいいのですが、もともとあまり安定しなかったWindows Backupの変わりなのでこんな感じでVHDのコピーをやってます。

Hyper-V's VHD backup only Windows Server 2008 R2. ...

 

 

 

 

PowerShellでHW-NICをリセットする(改)

この記事はPowerShellアドベントカレンダー2014の12/3分の記事です。


PowerShell Advent Calendar 2014 : ATND

先日NICをリセットするスクリプトネタで日記を書きましたが、さすがに毎回手動実行は面倒なので、イベントログの特定のイベントに引っ掛けて起動するようなタスクを作ってみました。

Reset Hardware NIC

それとともに複数のNICがあった場合(具体的にはHyper-Vの仮想NICを除外する)でも正しく実行されるように、HWのNICのみリセットするようにしてみました。

Call Reset-HWNIC.ps1 task on Server start delay 15 ...

こちらはOS起動のイベントを検知して、上記のスクリプトを実行するタスクスケジューラをエクスポートしたxmlファイルです。タスクスケジューラのXMLはなぜかUTF-16なので、もしこれを使う場合はUTF-16で保存してください。

PowerShell 4.0でNetwork Adapterをリセットする

Reset Network Adapter for Windows 8.1/Windows Serv ...

 ドメインコントローラーとメンバーサーバが不通になると、ドメインネットワークとして判定されているNICがプライベートネットワークになることがあります。

プライベートネットワークになると認証が必要になる環境ではつながらなくなるので、適度なタイミングでNICをリセットしますが、今まではGUIかWMIを使ってリセットする必要がありましたが、Windows 8.1以降に付属するPowerShell 4.0ではFunctionが用意されているので、楽になりました。

Enable-NetAdapter

汎用的にするならNIC名を環境から取得する必要がありますが、アドホックなやつなのでこんな感じで。NIC名はローカライズされているので、できればとったほうがいいですね。

PowerShellとRelease Management Serverについてお話してきました

第 4 回 PowerShell 勉強会 - Japan PowerShell User Group (JPPOSH) | Doorkeeper

で「リリースとPowerShell」というお題でRelease Management ServerとPowerShell DSCについてお話してきました。スライドはこちら。 

 デモ環境が多くて、ちょっとうまくできなかったかもしれませんが、リリースの承認フローが必要な場合は使ってみても面白いんじゃないでしょうか。UIはもうちょっと頑張れ、という感じですか…。

ちなみにRelease Management Serverにプロビジョニングの仕組みはありませんので、それは別枠でやってください。標準リリースでは台数が増えるとそれにあわせてリリーススクリプトを変更する必要がありますが、vNextでサポートされているChefやPowerShell DSC(UI内では「標準」)を使うと、全部外だしの形にできるので、いいかなと思います。