WIN1@Codename

Codename

スポンサーサイト

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

RemoteApp にHyper-V マネージャー を追加する方法

Windows7などのクライアントOSからHyper-Vを管理したい場合、Hyper-Vマネージャーが使えれば便利だなと思うのですが、標準でインストールさいれていません。
そこで、RemoteAppを利用してHyper-Vマネージャーを使ってみようと思います。
(RemoteAppの設定はこちらを参考にしてください。)

RemoteAppマネージャーより、RemoteAppプログラムの追加を行います。
ウィザードに従ってみると、追加するプログラムの一覧に「Hyper-Vマネージャー」の名前が見つかります。
20102225100556

こちらを選択してウィザードを完了すると、RemoteAppにHyper-Vマネージャーが登録されました。 こちらを右クリックして接続用の、rdpファイルを作成します。
20102525100553

さて、いざ接続してみるとこんなエラーが出て接続できません。
20102725100500

アクセス権の問題かと思いいろいろ試してみるもうまくつながりませんでした。
そこで、RemoteAppの追加方法をかえてみることに。
RemoteAppの追加ウィザードで「Hyper-Vマネージャー」を選択せずに、直接Hyper-Vマネージャーのmscファイル(C:\Program Files\Hyper-V\virtmgmt.msc)を参照設定より選択しました。
20102825100553

この設定で接続してみると、Windows7からHyper-Vマネージャーにつながりました!
cap

なかなか手ごわい設定方法でしたが、これで便利になります。

スポンサーサイト

シャドウコピーを使ったバックアップの自動化

無印のWindows2008ではファイル単位のバックアップができません。
そこでシャドウコピーの管理コマンド「vssadmin」を利用してファイル単位のバックアップを行うためのコードをかいてみました。

Imports System.Text
Imports System.Text.RegularExpressions

Public Module sample

  Sub Main()
    Dim strDrive As String = "C" 'シャドウコピー取得ドライブ
    Dim strFrom As String = "\test.vhd" 'バックアップ対象ファイル
    Dim strTo As String = "D:\Backup\test.vhd" 'バックアップ先ファイル
    Dim strCommandRes As String = GetCommanRes("/c vssadmin list shadows")
    Dim objArry As ArrayList = GetDateList("作成時刻: (?<Date>\d+/\d+/\d+ \d+:\d+:\d+)\r\n.+\r\n.+\((?<Drive>\w):\).+", strCommandRes, strDrive)
    Dim strFolderPath As String = GetFolderPath(objArry, strDrive)
    Dim strFilePath As String = strFolderPath & strFrom
    My.Computer.FileSystem.CopyFile(strFilePath, strTo, True)
    MsgBox("Backup Done!")
  End Sub

  Private Function GetFolderPath(ByVal objArry As ArrayList, ByVal strDrive As String) As String
    Dim strPath As String = ""
    Dim dteNewest As Date
    For i As Integer = 0 To objArry.Count - 1
      Dim dteUpdate As Date = objArry(i)
      If dteNewest < dteUpdate Then
        dteNewest = dteUpdate
      End If
    Next
    Dim dteGMTUpdate As Date = DateAdd(DateInterval.Hour, -9, dteNewest)
    Dim strGMTUpdate As String = dteGMTUpdate.ToString("yyyy.MM.dd-HH.mm.ss")
    strPath = "\\localhost\" & strDrive & "$\@GMT-" & strGMTUpdate
    Return strPath
  End Function

  Private Function GetDateList(ByVal strRege As String, ByVal strText As String, ByVal strDrive As String) As ArrayList
    Dim objArrayList As New ArrayList
    If strRege <> "" Then
      Dim objRegex As New Regex(strRege)
      Dim objMatch As Match = objRegex.Match(strText, RegexOptions.IgnoreCase)
      While objMatch.Success
        If strDrive = objMatch.Groups("Drive").Value Then
          objArrayList.Add(objMatch.Groups("Date").Value)
          Console.WriteLine(objMatch.Groups("Date").Value)
        End If
        objMatch = objMatch.NextMatch()
      End While
    End If
    Return objArrayList
  End Function

  Private Function GetCommanRes(ByVal strCommand As String) As String
    Dim strRes As String = ""
    Dim objProcessStartInfo As New System.Diagnostics.ProcessStartInfo()
    objProcessStartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
    objProcessStartInfo.RedirectStandardInput = False
    objProcessStartInfo.RedirectStandardOutput = True
    objProcessStartInfo.UseShellExecute = False
    objProcessStartInfo.CreateNoWindow = True
    objProcessStartInfo.Arguments = strCommand
    Dim objProcess As System.Diagnostics.Process = System.Diagnostics.Process.Start(objProcessStartInfo)
    strRes = objProcess.StandardOutput.ReadToEnd
    objProcess.WaitForExit()
    Return strRes
  End Function

End Module

手順としては、vssadminコマンドでシャドウコピーの一覧を取得し、該当ファイルを見つけてコピーしています。
Windows2008R2のファイル単位で設定できる「Windows Server バックアップ」が出るまではこれでやってました。

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

前回、リモートデスクトップでAeroグラスを使えるようになったのですが、こちら一度ログオフしてしまうと再度ローカルでログオンして「個人設定」よりAeroテーマを選択しないと、リモートデスクトップではAeroグラスを有効にできないことがわかりました。

ログオフしても、Aeroグラスをそのまま使えるようにするには「サーバーマネージャー」より「役割の追加」で「リモートデスクトップサービス」を追加する必要があります。
20104321120535

でも、この設定をするとRDライセンスサーバーを 設定する必要があったりと手間がかかりすぎてしまいます。
Aeroグラスを使いたければログオフはなるべくしないようにする、といった対応策が必要かも。

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

リモートデスクトップでWindow7同等のウィンドウが半透明になるAeroグラスを使えるようにする方法です。

「サーバーマネージャー」より「機能の追加」-「デスクトップエクスペリエンス」を選択します。
20103621090559

再起動後、再び「サーバーマネージャー」より「構成」-「サービス」-「Themes サービス」を自動起動で有効にします。
20103721090530

次にファイル名を指定して実行より「gpedit.msc」と入力しローカルグループポリシーエディタを起動します。
「ローカルコンピューターポリシー」-「コンピューターの構成」-「管理用テンプレート」-「Windows コンポーネント」-「リモートデスクトップサービス」-「リモートデスクトップセッションホスト」-「リモートセッション環境」を選択します。
「リモートデスクトップセッションのデスクトップコンポジションを許可する」を有効にします。
続いて、「色の解像度を制限する」を有効にし、32ピットに設定します。
20103225010513
参考

さて、ここまでですとネットでもよくある設定方法なのですが、リモートデスクトップで使うとなるとさらに一手間かけてやる必要があります。
このままリモートデスクトップで接続しても、デスクトップ上で右クリック「個人設定」よりAeroテーマを選択しようとしても、反転していて選択することができません。
20104521090510

この場合、リモートデスクトップからではなく、一度ローカルで直接ログオンして「個人設定」よりAeroテーマを選択して、適用した状態からリモートデストップで接続すると見事Aeroグラスを使えるようになりました。

このリモートデスクトップでAeroグラスですが、残念ながら接続先と接続元の組あわせに制限があるようです。
20105221090512
参考元

結構制限がありますのでご注意を。

RemoteApp の設定

Windows Server 2008 ではスルーしてきましたが、R2になって触る機会があったので覚書としてRemoteAppの設定をしてみました。

サーバーマネージャーから「役割の追加」を選択します。
20100818020545

「リモートデスクトップサービス」を選択します。
20100918020512

RemoteAppだけであれば、「リモートデスクトップセッションホスト」と「リモートデスクトップ仮想化ホスト」を追加します。
20101018020543

ウィザードに従い淡々と・・・
2010051805055520100618050511

2010061805052520100618050540

2010061805055020100718050557

再起動後、サーバーマネージャーを見てみると「RemoteAppマネージャー」が追加されています。
20102018050503

次に、RemoteAppで使用するアプリケーションの登録です。
RemoteAppマネージャ、右の操作メニューより「RemoteAppプログラムの追加」を選択します。 ウィザードに従ってアプリケーションを登録します。 アプリケーション自体はWindowsServer2008R2に事前にインストールされているものとします。
20102018050543

今回は「ペンイント」を登録してみました。
ウィザード完了後、画面中央下に「ペイント」がリストに追加されていますので、こちらを右クリックして接続するためのリモートデスクトップクライアントファイルを作成します。
「.rdpファイルの作成」を選択し、こちらもウィザードに従いファイルを作成します。
20102318050507

作成したrdpファイルを使用してRemoteAppのペイントに接続してみたところです。
20102618050554

一見するとローカル(Windows7)のペンイントが起動したかのように何ら違和感がありまsん。 使いかってもローカルのペイントと変わりなしです。

20102918050510 20102918050531

こうして並べてみると違いが分かりますね。

何ら難しいところもなく簡単に設定ができました♪            

Hyper-V をプログラムでどうにかしてみる その13 (isoイメージのアンマウント)

TechNetの方であがっていた質問だったのですが、PowerShellでは簡単に実現できたisoイメージのアンマウントでしたが、VBでやろうとするとエラーが出てしまいなかなかうまくいきませんでした。

MSのサポートへも問い合わせしてみたのですが、明確なサンプルは存在しないとのことで、RunspaceInvoke を利用してVBからPowerShellのコマンドを呼び出す方法で回避せよとのことでした。

うーん・・・、PowerShellでできるということは、WMIの問題ではないだろうとの予測。
やはり、VBでの書き方か、ということでトライ&エラーを繰り返してようやく出来ました!
これが一週間悩んだ成果です。

Dim objConnectionOptions As New ConnectionOptions()
objConnectionOptions.Impersonation = ImpersonationLevel.Impersonate
objConnectionOptions.EnablePrivileges = True
objConnectionOptions.Username = strAccount
objConnectionOptions.Password = strPassword
Dim objManagementScope As New ManagementScope("\\" + strServer + "\root\virtualization", objConnectionOptions)
objManagementScope.Connect()

Dim objComputerSystem As ManagementObject = Nothing
For Each objManagementObject As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName = '" & strVMName & "'")).Get
    objComputerSystem = objManagementObject
Next

Dim objDVD As ManagementObject
For Each objManagementObject As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_ResourceAllocationSettingData WHERE ResourceType = 16 AND Address = '0'")).Get
    objDVD = objManagementObject
    Exit For
Next

Dim objISO As ManagementObject
For Each objManagementObject As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_ResourceAllocationSettingData")).Get
    objISO = objManagementObject
    If objISO("Parent") = objDVD.Path.Path Then
        Console.WriteLine(objISO("Connection")(0))
        Exit For
    End If
Next

For Each objVirtualSystemManagementService As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_VirtualSystemManagementService")).Get
    Dim objParams As ManagementBaseObject = objVirtualSystemManagementService.GetMethodParameters("RemoveVirtualSystemResources")
    Dim strResourceSettingData As String() = New String(0) {}
    strResourceSettingData(0) = objISO.Path.Path
    objParams("ResourceSettingData") = strResourceSettingData
    objParams("TargetSystem") = objComputerSystem.Path.Path
    Dim objManagementBaseObject As ManagementBaseObject = objVirtualSystemManagementService.InvokeMethod("RemoveVirtualSystemResources", objParams, Nothing)
Next 

ポイントは ResourceSettingData へ渡すデータでした。
ModifyVirtualSystemResources や AddVirtualSystemResources では対象オブジェクトをCimDtd20形式の文字列で渡していましたが、RemoveVirtualSystemResources ではオブジェクトの Path.Path プロパティーを渡すこととなっていました。

よくよく考えればなーるほどなんですけどねぇ・・・。

Hyper-V をプログラムでどうにかしてみる その12 (サムネイルイメージの取得)

Hyper-Vマネージャーでは現在の仮想マシンの状態をサムネルイメージで確認することができます。
20102512030524

このサムネイルイメージをプログラム的に取得することができます。 

Dim
objConnectionOptions As New ConnectionOptions()
objConnectionOptions.Impersonation = ImpersonationLevel.Impersonate
objConnectionOptions.EnablePrivileges = True
objConnectionOptions.Username = strAccount
objConnectionOptions.Password = strPassword
Dim objManagementScope As New ManagementScope("\\" + strServer + "\root\virtualization", objConnectionOptions)
objManagementScope.Connect()

Dim objComputerSystem As ManagementObject = Nothing
For Each objManagementObject As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName = '" & strVMName & "'")).Get
    objComputerSystem = objManagementObject
Next

Dim objVirtualSystemsettingData As ManagementObject = Nothing
For Each objManagementObject As ManagementObject In objComputerSystem.GetRelated("Msvm_VirtualSystemsettingData")
    objVirtualSystemsettingData = objManagementObject
Next

Dim x As Integer = 640
Dim y As Integer = 480
For Each objVirtualSystemManagementService As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_VirtualSystemManagementService")).Get
    Dim objParams As ManagementBaseObject = objVirtualSystemManagementService.GetMethodParameters("GetVirtualSystemThumbnailImage")
    objParams("WidthPixels") = x
    objParams("HeightPixels") = y
    objParams("TargetSystem") = objVirtualSystemsettingData.Path.Path
    Dim objManagementBaseObject As ManagementBaseObject = objVirtualSystemManagementService.InvokeMethod("GetVirtualSystemThumbnailImage", objParams, Nothing)
    Call ErrorCheck(objManagementBaseObject, objManagementScope)
    Dim bytData() As Byte = objManagementBaseObject("ImageData")

    Using objBitmap As New Bitmap(x, y, PixelFormat.Format16bppRgb565)
        Dim objRectangle As New Rectangle(0, 0, x, y)
        Dim objBitmapData As BitmapData = objBitmap.LockBits(objRectangle, ImageLockMode.WriteOnly, PixelFormat.Format16bppRgb565)
        System.Runtime.InteropServices.Marshal.Copy(bytData, 0, objBitmapData.Scan0, x * y * 2)
        objBitmap.UnlockBits(objBitmapData)
        objBitmap.Save(strVMName & ".jpg")
    End Using
Next

640×480の大きさのイメージをjpeg形式で保存しています。
これを、一定間隔で実行することで仮想マシンの状態をイメージで確認できるようになります。

TMG で Webアクセスポリシー を設定してみる

ISA Server 2006 と TMG の管理画面でメニューをくらべてみました。

ISA
 20104908040510
 
TMG
20104508040512

ずいぶん項目が増えています。
より細かい設定や新しい機能が増えていることがわかります。

今回はこの中で新しい機能の「Web アクセス ポリシー」の設定を行ってみたいと思います。
画面右側の「タスク」メニューより、「Web アクセス ポリシー」の構成を選択します。
20105108040551

ウィザード形式でTMG配下にあるPCからのWebアクセス時の詳細なルール決めを行います。
20105607110513 20101807020532
20101807020553 20101907020514 20101907020530 20101907020549 20102007020532

URLのフィルタ、マルウェアの検出設定、HTTPSの接続設定、プロキシとしてのWebキャッシュの設定を行います。

このウィザードを完了することで、安全なWebアクセスを行うための設定が行われます。
また、Webアクセスのパフォーマンスアップがプロクシ機能により提供されます。
20102407020552

Forefront Threat Management Gateway をインストールしてみた

ISA Server 2006の後継となるゲートウェイサーバーの、「Forefront Threat Management Gateway(TMG)」が新たにリリースされていたので、評価を兼ねて使ってみることにしました。

通常の使い方としては、ネットワークゲートウェイとして、ファイヤーウォール、Webプロキシ、VNSサーバーといった機能を主に利用することになります。
これらの機能はISA Server 2006 でも基本機能として実装されており、GUIベースの分かりやすい設定画面で簡単に利用することができます。
新たにリリースされた、TMG ではこれらの機能に加えForfrontの仲間としてWebのマルウェア対策機能やメールのセキュリティー機能が加わりよりいっそうセキュアなネットワーク環境が構築できるようになっています。

早速インストールです。
20101226010431 20105726020430

ISAと特に変わったところもないようで問題なくインストールは完了しました。

インストール完了後、ネットワークの設定、システム設定の構成、展開オプションの定義の3つのウィザード設定を行うことになります。
20104026050405

目新しいのは、「展開オプションの定義」でWebの保護の設定がありました。
20105607110513

一通り設定が完了すると、TMGの管理画面となります。
ISAとあまり変わりがないようなので、特に戸惑うこともありませんでした。
20105807110509

このような感じでインストールに関しては特に難しいところはなく完了しました。
これから細かなアクセスルールを設定してゆくことになります。
こちもGUIベース&ウィザード形式で簡単に分かりやすい設定方法がとられているので、あまり悩むことなく設置できそうです。

FC2Ad

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