SCVMMのジョブ(2)

前回の投稿では、SCVMMのジョブをアーカイブするためのいくつかの方法を紹介しましたが、
今回はGet-Jobコマンドレットを使ったスクリプトを作成し、実際に使ってみたいと思います。

今回使用するスクリプトは、TechNetライブラリに掲載されている、GetLibraryAuditRecords.ps1です。
このスクリプトでは、Get-Jobコマンドレットを実行し、その結果を設定前の値と設定後の値で並べて表示する、
というものですが、実際に利用するに当たり、注意したい点があります。
それは、「ジョブには名前がついているので、どの名前のジョブを出力するか決めておく」ということです。

これだけでは、何を言っているのかわかりにくいですね。もう少し詳しく説明しておきます。
ジョブの名前とは、管理者コンソールのジョブを開いたときに[名前]欄で表示される部分のことを指します。
Job-console1
画面 – 青枠で囲まれたところに表示されているがジョブの名前

GetLibraryAuditRecords.ps1 は、ジョブの名前を単位としてクエリを実行するように作られているため、
なにかしらの名前を指定する必要があります。ちなみに、ジョブの名前はGet-Jobコマンドレットを
次のように実行すれば確認できます。


$LibNames=Microsoft.SystemCenter.VirtualMachineManagerGet-Job -all | Sort-Object name
Foreach ($LibName in $LibNames){
  if ($LibName –ne $i){
    $LibName.name
    $i=$LibName.name
  }
}

 

これで、どのような名前があるか確認することができます。
名前の一覧を確認し、どの名前のジョブ一覧をログとして保存するかを決めたら、
GetLibraryAuditRecords.ps1スクリプトでジョブの名前を指定します
(下の表内、赤字で書いてある「ライブラリ共有の更新」部分)。
ちなみにジョブの名前を指定せずに全件表示させるなら、赤字部分はアスタリスクでもいいですね。

# Filename: GetLibraryAuditRecords.ps1
# Description: Gets all library refresh jobs, and then
# lists the previous and new values for the
# properties that were changed for each job.# Get all library refresh jobs. Because Windows PowerShell 2.0 also contains a Get-Job cmdlet,
# qualify that you are using the VMM Get-Job cmdlet by specifying the VMM snap-in.
$LibraryJobs = Microsoft.SystemCenter.VirtualMachineManagerGet-Job -all | Where {$_.Name -eq “ライブラリ共有の更新“}

# Get the audit records for each library refresh job.
ForEach ($LibJob in $LibraryJobs)
{
$FullLibJob = Microsoft.SystemCenter.VirtualMachineManagerGet-Job -Job $LibJob –Full

# Get and list the changed properties for each audit record.
Foreach ($AuditRecord in $FullLibJob.AuditRecords)
{
Write-Host “”
Write-Host “Property:” $AuditRecord.Name
Write-Host “Previous value:” $AuditRecord.Previous.Value
Write-Host “New value:” $AuditRecord.New.Value
Write-Host “” Write-Host
“#####################################################”
}
}

上表 GetLibraryAuditRecords.ps1のスクリプト(TechNetライブラリから転載) 

私は「ライブラリ共有の更新」の文字を決め打ちするのが嫌だったので、
$LibraryJobs=で始まる行に1行加えて、次のようにGetLibraryAuditRecords.ps1を変更してみました。

$LibName=Read-Host EnterName
$LibraryJobs = Microsoft.SystemCenter.VirtualMachineManagerGet-Job -all | Where {$_.Name -eq $LibName]

 

実行結果はご自身で試していただければ、確認することができますし、
TechEdでもご覧いただくことにしたいと思っています。