WIN1@Codename

Codename

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WindowsServer2008R2 のリモートデスクトップでAeroグラスを使う方法(追記4)

これまで「WindowsServer2008R2 のリモートデスクトップでAeroグラスを使う方法」をご紹介してきましたが、さらに追記です。

参考:
WindowsServer2008R2 のリモートデスクトップでAeroグラスを使う方法 追記1 追記2 追記3

リモートデスクトップでAeroグラスは使えるようになったのですが、リモートデスクトップからさらにリモートデスクトップでAeroグラスを使おうとしてみましたが、いろいろと設定をいじってみましたがこちらは残念ながらうまくいきませんでした。

Windows7のテーマは使用できるものの、ウィンドウが半透明になるAeroグラスは選択できず・・・です。

スポンサーサイト

VMMエージェントのバージョンアップ方法

SystemCenter Virtual machine Manager からHyper-Vのホストを管理するためには、VMMエージェントなるアプリケーションをHyper-Vのホストにインストールする必要があります。

前回少々苦労しましたが、
こちらを参考に
http://technet.microsoft.com/ja-jp/library/cc764218.aspx
ドメインに属していないHyper-Vホストを追加することができました。

ですが、無事インストールできてほっとしたのもつかの間、登録したホスト情報をみてみると
20104722101211

なんと「全体の状態」が「要注意」になっています!?
なにかエラー??かと思ったのですがよくみると、ホストにインストールしたエージェントのバージョンが古いらしぃ・・・。

なら、バージョンアップすればよいではないですかと簡単に考えていたのですが、この情報がまったくない。。。
ドメインに属しているホストであれば、VMMからプッシュでバージョンアップ可能なのですが、境界ネットワーク上のホスト、いわゆるドメインに属していない場合、WindowsUpdateでも更新できず、マイクロソフトのダウンロードサイトを探してみましたがそれらしきものが見当たらずでした。

またもや壁にぶち当たりかと、今日はここまでとあきらめかけたときにVMM自身にエージェントファイルはないのかとエクスプローラで探してみたところ、ありました!ビンゴ!
C:\Program Files\Microsoft System Center Virtual Machine Manager 2008 R2\agents\amd64
の中に最新バージョンの2.0.4275.0がありました。
これを対象のHyper-Vホストにコピーして早速ローカルでインストールを実行してみたところ、表記は英語ですが手順は古いバージョンと同じでした。
作成したセキュリティーファイルを使って無事ホストの追加完了。 今度は問題なしです!
20104022111231

SystemCenter Virtual Machine Manager Agent のインストール失敗原因

増えすぎた仮想環境の効率的な管理のため、SystemCenter Virtual Machine Manager(VMM) の導入を検証しております。

大元のVMMのインストールはドメインが必須という点に気をつければ、すんなりとスムーズにインストールが完了しました。

さて、ここから問題が・・・。

管理しようとしているHyper-Vのホストサーバーの多くはドメインに属していません。

なので、管理するためにはVMMのエージェントをローカルインストールする必要があります。

http://technet.microsoft.com/ja-jp/library/cc764218.aspx
こちらの手順に沿ってインストールを進めます。

ドメインに属しているサーバーであれば、VMMからプッシュでエージェントをインストールできるようです。
20103422101223

Hyper-Vのホストサーバーから、直接VMMのDVDよりSetup.exeを実行して、「ローカルエージェント」を選択します。

通常であれば、このままインストール完了となるはずなのですが、何度やっても、他のサーバーで同じようにやっても「WM-Managementサービスを構成できませんでした。ローカルグループポリシーエディター(gpedit.msc)で・・・」WinRM の設定云々とのエラーメッセージで、完了できません。
20103422101250

あれやこれやと3日間健闘してみましてようやく原因?が判明しました。

ローカルエージェントをインストールしようとしているHyper-VのホストのWindowsはすべて、Windows2008R2 Datacenter Edition でした。 

この場合、ローカルのAdministratorアカウントでログインして、Setup.exeを実行するとインストールが成功することが分かりました。

そういえば、Hyper-VへのWMI経由のプログラム的なアプローチをする場合、Datacenterの場合はAdministratorアカウントを使用しないとWMIの認証エラーが出ていたことを思い出しました。
WS-ManagementサービスもWMI経由のアプローチが必要らしく・・・。

なぜ?といった理由は不明なのですが、WMIを扱う場合は必ずAdministoratorアカウントでアクセスする必要があるのです。 

そんなこんなで、ようやく一つ壁を越えることができましたので、次のステップに進むことにいたします♪

カーネル電源マネージャーがシャットダウンへの切り替えを開始しました

"カーネル電源マネージャーがシャットダウンへの切り替えを開始しました"
ソース Kernel-Power
イベントID 109

こんなイベントログが出ていて、Windowsが勝手にシャットダウンしてしまう場合、ライセンス認証が成功してない場合があります。
「コンピューター」-「プロパティー」から「Windowsのライセンス認証」を行ってみてください。

20101622091243

20101722091239

TechNet スクリプトセンター

ここで紹介しているHyper-V関連のVBScriptは「TechNet スクリプトセンター」でも紹介しています。

WIN1の他にもMVPの方々が参考になるスクリプトを多数紹介しています。

スクリプトセンター自体も数多くのこれは!と思えるようなサンプルが多数掲載せれていますので、是非是非ご利用ください。

Hyper-V をプログラムでどうにかしてみる VBScript その12 (DVDドライブの追加)

今回は仮想マシンにDVDドライブを追加して、isoファイルをマウントしてみましょう。
手順としては、IDEコントローラーにDVDドライブを追加して、isoイメージをマウントするといった次第です。

Option Explicit

Dim strServerName, strVMName, strIsoPath, strDiskPath, objWMIService, objManagementService
strServerName = "."
strVMName = "TestVM"  
strIsoPath= "E:\Hyper-V\TestVM\Dvd.iso"
Set objWMIService = GetObject("winmgmts:\\" & strServerName & "\root\virtualization")
Set objManagementService = objWMIService.ExecQuery("SELECT * FROM Msvm_VirtualSystemManagementService").ItemIndex(0)

Call SetDvdDrive(strVMName)
Call SetIso(strVMName, strIsoPath)

Function SetIso(strVMName, strIsoPath)
    Dim objComputerSystem
    Set objComputerSystem = objWMIService.ExecQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName = '" & strVMName & "'").ItemIndex(0)
   
    Dim objResourcePool
    Set objResourcePool = objWMIService.ExecQuery("SELECT * FROM Msvm_ResourcePool WHERE ResourceType = 21 AND ResourceSubType = 'Microsoft Virtual CD/DVD Disk' AND OtherResourceType = null").ItemIndex(0)

    Dim objAllocationCapabilities
    Set objAllocationCapabilities = objWMIService.ExecQuery("ASSOCIATORS OF {" & objResourcePool.Path_.Path & "} WHERE ResultClass = Msvm_AllocationCapabilities").ItemIndex(0)
   
    Dim objSettingsDefineCapabilities
    Set objSettingsDefineCapabilities = objWMIService.ExecQuery("REFERENCES OF {" & objAllocationCapabilities.Path_.Path & "} WHERE ResultClass = Msvm_SettingsDefineCapabilities").ItemIndex(0)
  
    Dim objIso
    If objSettingsDefineCapabilities.ValueRole = 0 Then
        Set objIso = objWMIService.Get(objSettingsDefineCapabilities.PartComponent)
    End If
  
    Dim objVirtualSystemSettingData
    Set objVirtualSystemSettingData = objWMIService.ExecQuery("SELECT * FROM Msvm_VirtualSystemSettingData WHERE ElementName = '" & strVMName & "'").ItemIndex(0)
   
    Dim objIDEController, objResourceAllocationSettingData
    Set objResourceAllocationSettingData = objWMIService.ExecQuery("ASSOCIATORS OF {Msvm_VirtualSystemSettingData='" & objVirtualSystemSettingData.InstanceID & "'} Where ResultClass=Msvm_ResourceAllocationSettingData AssocClass=Msvm_VirtualSystemSettingDataComponent")
    For Each objIDEController In objResourceAllocationSettingData   
        If objIDEController.ResourceSubType = "Microsoft Emulated IDE Controller" Then
Exit For
        End If
    Next
   
    Dim objDvdDrive, strIsoPaths
    strIsoPaths = Array(1)
    strIsoPaths(0) = strIsoPath
    Set objDvdDrive = objWMIService.ExecQuery("SELECT * FROM Msvm_ResourceAllocationSettingData WHERE Parent = '" & Replace(objIDEController.Path_.Path, "\", "\\") & "' AND Address = '1'").ItemIndex(0)
    objIso.Parent = objDvdDrive.Path_.Path
    objIso.Connection = strIsoPaths

    Dim strResourceSettingData
    strResourceSettingData = Array(1)
    strResourceSettingData(0) = objIso.GetText_(1)  

    Dim objInParam, objOutParams
    Set objInParam = objManagementService.Methods_("AddVirtualSystemResources").InParameters.SpawnInstance_()
    objInParam.ResourceSettingData = strResourceSettingData
    objInParam.TargetSystem = objComputerSystem.Path_.Path
    Set objOutParams = objManagementService.ExecMethod_("AddVirtualSystemResources", objInParam)

    Call JobCompleted(objOutParams, objWMIService)
End Function

Function SetDvdDrive(strVMName)
    Dim objComputerSystem
    Set objComputerSystem = objWMIService.ExecQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName = '" & strVMName & "'").ItemIndex(0)
  
    Dim objResourcePool
    Set objResourcePool = objWMIService.ExecQuery("SELECT * FROM Msvm_ResourcePool WHERE ResourceType=16 and ResourceSubType='Microsoft Synthetic DVD Drive' AND OtherResourceType = null").ItemIndex(0)

    Dim objAllocationCapabilities
    Set objAllocationCapabilities = objWMIService.ExecQuery("ASSOCIATORS OF {" & objResourcePool.Path_.Path & "} WHERE ResultClass = Msvm_AllocationCapabilities").ItemIndex(0)
   
    Dim objSettingsDefineCapabilities
    Set objSettingsDefineCapabilities = objWMIService.ExecQuery("REFERENCES OF {" & objAllocationCapabilities.Path_.Path & "} WHERE ResultClass = Msvm_SettingsDefineCapabilities").ItemIndex(0)
  
    Dim objDvdDrive
    If objSettingsDefineCapabilities.ValueRole = 0 Then
        Set objDvdDrive = objWMIService.Get(objSettingsDefineCapabilities.PartComponent)
    End If

    Dim objIDEController
    Set objIDEController = objWMIService.ExecQuery("SELECT * FROM Msvm_ResourceAllocationSettingData WHERE ResourceType = 5 AND ResourceSubType = 'Microsoft Emulated IDE Controller' AND Address = '1'").ItemIndex(0)
    objDvdDrive.Parent = objIDEController.Path_.Path
    objDvdDrive.Address = 0

    Dim strResourceSettingData
    strResourceSettingData = Array(1)
    strResourceSettingData(0) = objDvdDrive.GetText_(1)  

    Dim objInParam, objOutParams
    Set objInParam = objManagementService.Methods_("AddVirtualSystemResources").InParameters.SpawnInstance_()
    objInParam.ResourceSettingData = strResourceSettingData
    objInParam.TargetSystem = objComputerSystem.Path_.Path
    Set objOutParams = objManagementService.ExecMethod_("AddVirtualSystemResources", objInParam)

    Call JobCompleted(objOutParams, objWMIService)
End Function

Function JobCompleted(objOutParams, objWMIService)
    Dim objJob
    If (objOutParams.ReturnValue = 0) Then
        Wscript.Echo "OK"
    ElseIf (objOutParams.ReturnValue <> 4096) Then
        Wscript.Echo "NG"
        Wscript.Echo objOutParams.ReturnValue
    Else  
        Set objJob = objWMIService.Get(objOutParams.Job)
        While (objJob.JobState = 3) Or (objJob.JobState = 4)
WScript.Sleep(1000)
Set objJob = objWMIService.Get(objOutParams.Job)
        Wend
        If (objJob.JobState <> 7) Then
Wscript.Echo "NG"
Wscript.Echo "ErrorCode:" & objJob.ErrorCode
Wscript.Echo "ErrorDescription:" & objJob.ErrorDescription
        Else
Wscript.Echo "OK"
        End If
    End If
End Function

2ステップとなりますが、こんな感じとなります。

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。