WIN1@Codename

Codename

スポンサーサイト

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

Hyper-V をプログラムでどうにかしてみる VBScript その15 (SCSIディスクの削除)

以前紹介したSCSIディスクの追加に対して、今回はSCSIディスクの削除(取り外し)についてご紹介します。

Option Explicit

Dim strServerName, strVMName, objWMIService, objManagementServicestrServerName = "."
strVMName = "TestVM" 
Set objWMIService = GetObject("winmgmts:\\" & strServerName & "\root\virtualization")
Set objManagementService = objWMIService.ExecQuery("SELECT * FROM Msvm_VirtualSystemManagementService").ItemIndex(0)

Call UnmountScsiHardDisk(strVMName)

Function UnmountScsiHardDisk(strVMName)
    Dim objComputerSystem
    Set objComputerSystem = objWMIService.ExecQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName = '" & strVMName & "'").ItemIndex(0)

    Dim objSCSIController, objResourceAllocationSettingData
    Dim objSCSIDrive, objSCSIDrives, obj
    Set objResourceAllocationSettingData = objWMIService.ExecQuery("SELECT * FROM Msvm_ResourceAllocationSettingData WHERE ResourceType = 6 AND ResourceSubType = 'Microsoft Synthetic SCSI Controller' AND OtherResourceType = null")
  
    For Each objSCSIController In objResourceAllocationSettingData
        Set objSCSIDrives = objWMIService.ExecQuery("SELECT * FROM Msvm_ResourceAllocationSettingData WHERE Parent = '" & Replace(objSCSIController.Path_.Path, "\", "\\") & "' AND Address = '0'")
        For Each obj In objSCSIDrives
Set objSCSIDrive = obj
Exit For
        Next
    Next   

    Dim objHardDisk, objManagementObject
    Set objManagementObject = objWMIService.ExecQuery("SELECT * FROM Msvm_ResourceAllocationSettingData")
    For Each obj In objManagementObject
        Set objHardDisk = obj
        If objHardDisk.Parent = objSCSIDrive.Path_.Path Then
 Exit For
        End If     
    Next 

    Dim strResourceSettingData
    strResourceSettingData = Array(1)
    strResourceSettingData(0) = objHardDisk.Path_.Path      
    Dim objInParam, objOutParams
    Set objInParam = objManagementService.Methods_("RemoveVirtualSystemResources").InParameters.SpawnInstance_()
    objInParam.ResourceSettingData = strResourceSettingData
    objInParam.TargetSystem = objComputerSystem.Path_.Path
    Set objOutParams = objManagementService.ExecMethod_("RemoveVirtualSystemResources", objInParam)

    strResourceSettingData = Array(1)
    strResourceSettingData(0) = objSCSIDrive.Path_.Path       
    Set objInParam = objManagementService.Methods_("RemoveVirtualSystemResources").InParameters.SpawnInstance_()
    objInParam.ResourceSettingData = strResourceSettingData
    objInParam.TargetSystem = objComputerSystem.Path_.Path
    Set objOutParams = objManagementService.ExecMethod_("RemoveVirtualSystemResources", 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" 
    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

今回のポイントは、SCSIに接続されたハードディスクをまず削除してから、SCSIドライブを削除するという点です。

スポンサーサイト

Hyper-Vマネージャーを権限を割り当てたユーザーに使わせたい

Hyper-Vを管理する場合、Hyper-Vマネージャーを頻繁に使いますが、こちらの操作権限を細かく設定したユーザーに使わせたいという場合があります。

たとえば、管理者はフルコントロール、カスタマーサポートは参照のみといった具合です。

この設定は承認マネージャから行なうことができます。

承認マネージャ(azman.msc)を起動して、「承認ストア」のテンプレートxmlファイル、"C:\ProgramData\Microsoft\Windows\Hyper-V\InitialStore.xml" を読み込みます。

利用者ごとにアカウントを追加し、許可する操作を追加してゆきます。
20115310110752

この設定により、ユーザーごとに権限を割り当てたHyper-Vマネージャーの操作が可能となります。

リモートデスクトップで前回ログイン時のユーザー名を表示しない方法

リモートデスクトップで接続した場合、前回ログインしたユーザー名が表示されてしまいます。

20110705

セキュリティー上、好ましくないという場合以下のレジストリを削除することで表示されなくなります。

HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers

この中にある該当する接続先のキーを削除します。

201107052

FC2Ad

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