会社のPCにVisualStudio2008とVisualStudio2010を入れていますが、今のところ問題なさそうです。
仮想化関連イベント
5/21に開催された「事例で納得!Microsoft Solution Forum& Virtualization Summit 2010
」と、5/22に開催された.NET勉強会/ヒーロー島に参加させてもらいました。
」と、5/22に開催された.NET勉強会/ヒーロー島に参加させてもらいました。
マイクロソフトエバンジェリストの高添さんのセミナーを2日も聞けるというありがたい週末でした。
Hyper-Vはちょくちょく使っていましたが、App-V/VDI(Virtual Desktop Infrastructure
)をトータルで聞くことができ、今後外せないテクノロジーという感じを受けました。
)をトータルで聞くことができ、今後外せないテクノロジーという感じを受けました。
仮想化だけでなく、ひそかにPowerPivotも「すごい!!」という感じでした。
また勉強しないといけないことが増えてしまった(~_~;)
VSからの印刷
VS2010の自動生成ソース
PowerShellの拡張コマンドレットを作成してみようとしているのですが、自動生成ソースが表示されたときになんとなく「なんか違う?」と思ってVS2008と比較してみたところ、やっぱり違ってました。
気がついたのは「Implements IDisposable」とした場合です。
ちょっと長いですが、ソースは以下の通り。
○VS2008 ——————————————————————————————-
Imports System.Management.Automation
Imports System.Diagnostics
Imports System.Diagnostics
<Cmdlet(VerbsLifecycle.Stop, "Hoge")> _
Public Class Hoge
Inherits Cmdlet
Implements IDisposable
Protected Overrides Sub ProcessRecord()
MyBase.ProcessRecord()
End Sub
MyBase.ProcessRecord()
End Sub
Private disposedValue As Boolean = False ‘ 重複する呼び出しを検出するには
‘ IDisposable
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
‘ TODO: 他の状態を解放します (マネージ オブジェクト)。
End If
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
‘ TODO: 他の状態を解放します (マネージ オブジェクト)。
End If
‘ TODO: ユーザー独自の状態を解放します (アンマネージ オブジェクト)。
‘ TODO: 大きなフィールドを null に設定します。
End If
Me.disposedValue = True
End Sub
‘ TODO: 大きなフィールドを null に設定します。
End If
Me.disposedValue = True
End Sub
#Region " IDisposable Support "
‘ このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。
Public Sub Dispose() Implements IDisposable.Dispose
‘ このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region
‘ このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。
Public Sub Dispose() Implements IDisposable.Dispose
‘ このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region
End Class
○VS2010 ——————————————————————————————-
Imports System.Management.Automation
Imports System.Diagnostics
<Cmdlet(VerbsLifecycle.Stop, "Hoge")>
Public Class Hoge
Inherits Cmdlet
Implements IDisposable
Public Class Hoge
Inherits Cmdlet
Implements IDisposable
Protected Overrides Sub ProcessRecord()
MyBase.ProcessRecord()
End Sub
MyBase.ProcessRecord()
End Sub
#Region "IDisposable Support"
Private disposedValue As Boolean ‘ 重複する呼び出しを検出するには
Private disposedValue As Boolean ‘ 重複する呼び出しを検出するには
‘ IDisposable
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
‘ TODO: マネージ状態を破棄します (マネージ オブジェクト)。
End If
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
‘ TODO: マネージ状態を破棄します (マネージ オブジェクト)。
End If
‘ TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下の Finalize() をオーバーライドします。
‘ TODO: 大きなフィールドを null に設定します。
End If
Me.disposedValue = True
End Sub
‘ TODO: 大きなフィールドを null に設定します。
End If
Me.disposedValue = True
End Sub
‘ TODO: 上の Dispose(ByVal disposing As Boolean) にアンマネージ リソースを解放するコードがある場合にのみ、Finalize() をオーバーライドします。
‘Protected Overrides Sub Finalize()
‘ ‘ このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
‘ Dispose(False)
‘ MyBase.Finalize()
‘End Sub
‘Protected Overrides Sub Finalize()
‘ ‘ このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
‘ Dispose(False)
‘ MyBase.Finalize()
‘End Sub
‘ このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。
Public Sub Dispose() Implements IDisposable.Dispose
‘ このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region
Public Sub Dispose() Implements IDisposable.Dispose
‘ このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region
End Class
Regionの範囲とかも変更されているのですが、大きな違いはアンマネージリソースを解放するためのロジック[Finalize()部分]がコメント状態で生成されること。
マネージリソースのみを使用する場合はこのままでよいですし、アンマネージリソースを使用するときにはコメント解除してリソース解放処理を追加するだけになるようです。
仕事でたまにWin32API関連の処理を書きます(.netではなくnative C++です(T_T))が、こんな処理を書こうとすると、前はMSDNのサンプルソースをコピーして使っていましたので、ちょっと嬉しい発見です。
VS2010 Download
今日からMSDNでVisual Studio 2010とかがDownloadできますね。
今日は早く帰る人多いのかな?
え~、Vusla Studio 2008のアンインストールがとっても大変なんですけど。
あ、SideBySide OKだからアンインストールしなくてもいいんでしたっけ。
会社のPCを人柱にしてしまえ<`~´>
Visual Studio 2010 発売日&価格
4/12にローンチされたのでMSDNを探していたんですが、日本語版はまだのようです。[2010/04/13 16:30時点]
<追加 Date=2010/04/13 19:20>
MSDN提供は4/20でした。
</追加>
正式な発売日と参考価格が掲載されていたのでメモ。
えっと、個人的にはTFS2010の価格が気になっていたのですが、
TFS2010 新規パッケージ:68,000円
はいい感じなのですが、
CALが68,000円(@_@;)
え~、ちょっと考えさせて下さい。(-_-;)
SCVMMでのバーチャルマシン移動
SCVMMが使えると、仮想環境の運用は相当楽ですねぇ。
Hyper-Vホスト同士での移動でも、SCVMMがなければ
エクスポート→ファイルコピー→インポート→仮想ネットワークの変更
という感じですが、SCVMMがあると、バーチャルマシン一覧内から移動先ホストにドラッグするだけでBITS(バックグラウンド インテリジェント転送サービス)での移動(SCVMMの表記としては「移行」)が実行できます。
ところが、
・移行元と移行先の仮想ネットワーク名が異なる
・移行先ホストにバーチャルマシン格納先が複数存在する(D:\Hyper-VとE:\Hyper-Vとか)
という状態で、ドラッグによる移行を行うと
・仮想ネットワークに接続されない
・移行先ホストの「配置」プロパティの先頭に指定されているパスに移行される
という動作になります。
仮想ネットワークは再指定するだけなのですが、格納フォルダが異なる場合、同一マシン内で移行させてもBITSでの移動となってしまい、無駄な時間がかかります。
一発できれいに移行させたい場合には、ドラッグではなく、バーチャルマシンを右クリックし「移行」を選択します。
すると、バーチャルマシンの移行ウィザードが起動され、
・移行先ホスト
・格納パスの選択
・ネットワークの選択
が事前に指定できます。
ドラッグでもウィザード起動してほしいですね。
VMConnectのショートカットキー
最近、いろいろな環境を作るのにHyper-Vを使っています。
ただ、サーバへリモートデスクトップ接続した状態でHyper-Vマネージャーから仮想マシンに接続したときに、統合サービスがインストールされていないとマウスが仮想マシンのウィンドウにキャプチャされ、ショートカットキーを押さないと抜け出せません。(Windows Server 2008 R2とWindows 7はOSセットアップ時から統合サービスが組み込まれている状態なので、この事象は発生しません)
昔使用していたVirtualServer2005だと、デフォルトがAltキーでしたが、Hyper-V(VMConnect)ではAlt+Ctrl+←キーに変更されています。
普通はこの組み合わせで問題ないのですが、会社の環境(ノートPCにディスプレイをつけてマルチディスプレイ状態。OSはWindows7でHyper-Vマネージャーをインストール)でこのショートカットキーを使用すると・・・
画面が回転するぅ~~~~~(@_@;)
PS2キーボード+PS2マウス→USB変換コネクタを使用しているのでそのせいかもしれませんが、ノートPCのキーボードでもなったような・・・。
ちなみに、対策はShiftキーをまぜて「Alt+Ctrl+Shift+←」とすると問題なく使えます。
SCVMM2008R2からVMWareの管理
TechNetにいろいろありました。
「VMM での VMware Infrastructure 3 環境の管理」
どうも、ESX Server上のゲストOSをHyper-Vに移行する(ゲストOSの動作環境をHyper-Vに移行する)パターンと、VMWare Infrastructure 3(VI3)環境の管理用にVMWare VirtualCenter ServerをVMMに追加するパターン(ゲストOSの動作環境はVMWareのままで、管理だけをSCVMMで行う)があるようです。
VMWare用にリアルマシン用意したいけど、ガマンガマン(-_-;)
SCVMM2008R2のインストール
先日MCP試験070-403(System Center Virtual Machine Manager、構成)を受験したものの、もう少しのところで不合格でした。
ちょいとやる気がでたのと、セカンドショット対応のチケットだったので、もう一回受験しようかと。
実際に使ってみないとよくわからないので、実際に使ってみようとHyper-V環境内で
・Active Directoryサーバ
・VMMサーバ兼VMMライブラリサーバ
・VMM セルフサービスポータルサイト用サーバ
・VMM管理コンソール用クライアント
を一気に作成。
管理対象Hyper-VはAD/SCVMMを作りこんだホストOSに、VirtualServer2005R2もゲストOS内に構築という無茶苦茶な環境。
さすがにVMWare ESX Serverを作りこむマシンまでは持ってないのでそこは机上ということで。
全体的にインストールはすんなりできるんですが、何点か引っかかったのでメモ。
○各種VMM関連サーバ
インストーラがサーバ間で通信するためのポートについてファイアウォール設定を自動変更してくれますが、サーバの再起動かファイアウォールの無効→有効(or 再起動)をしたほうがよいかもです。
→セルフサービスポータルにアクセスできないことがありました。
○セルフサービスポータルサイト
・IIS7の場合、以下のコンポーネントの追加が必要
・[Webサーバ]-[アプリケーション開発]-[ASP.NET]
・[管理ツール]-[IIS6管理互換]-[IIS6 メタベース互換]
・[管理ツール]-[IIS6管理互換]-[IIS6 WMI互換]
・セルフサービスポータルサイトの通信ポートとしてポート80を使う場合、インストール前にDefault Web Siteを削除しておく必要がある。
インストール時にポート競合のエラーとなって、インストールできません。
○管理コンソール
セルフサービスポータルサイトがあるので不要かと思ってましたが、最低限1台は必須でした。(理由はこの後)
○セルフサービスポータルサイトへのアクセス権について
セルフサービスポータルサイトにアクセスするためには、ユーザロールとして「ポータルアクセス」を追加しないとログインできません。
→この作業を行うために、管理コンソールが必須になります。
これから、権限の設定とかSystem Manager Operation Manager(OpsMgr)2007とかWindowsシステム・リソース・マネージャ(WSRM)とかPerformance and Resource Optimization(PRO)とかの設定の確認です。
関連アプリがありすぎて、ややこしいです。(;一_一)