以下のスクリプトの実行中に、まれにエラーが発生します。SCVMM サーバーからデータを取得して CSV ファイルにコピーするスクリプトを作成しました。このスクリプトは 15 分ごとに実行されます。スケジューラを使用してこれをスケジュールしました。ただし、ここでの問題は、警告を下回り、必要なデータを CSV ファイルにコピーしていないことがあります。ほとんどの場合、実行中です。エラーをスローしているインスタンスはほとんどありません。
Get-SCCloud : 指定されたコンピューター名を解決できなかったため、VMM は VMM 管理サーバー calo-infvmm-01.calocosn.local に接続できません。
2016-05-15 19:01:30,334 INFO 実行中のシステム コマンド: C:\cc-working\scripts\PowerShell\VMHours\Sydney\GetStorageDetails.bat -d 20160515 > C:\cc-working\usage_files\VMUphours\Sydney\出力\VMHours_20160515.csv 2016-05-15 19:01:33,874 WARN Get-SCCloud: VMM が VMM 管理サーバーに接続できません 2016-05-15 19:01:33,874 指定されたコンピューター名を 2016-05-15 19:01:33,890 WARN が解決されました。(エラーID:1601) 2016-05-15 19:01:33,890 警告 2016-05-15 19:01:33,890 WARN コンピューター名が正しいことを確認してから、操作を再試行してください。もしも 2016-05-15 19:01:33,890 WARN 問題が解決しない場合は、ネットワーク管理者に連絡してください。 2016-05-15 19:01:33,890 警告 C:\cc-working\scripts\PowerShell\VMHours\Sydney\usage.ps1:7 char:11 2016-05-15 19:01:33,890 警告 + $clouds = Get-SCCloud -VMMServer $VMMServer 2016-05-15 19:01:33,890 警告 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2016-05-15 19:01:33,890 警告 + CategoryInfo: ReadError: (:) [Get-SCCloud]、CarmineException 2016-05-15 19:01:33,890 警告 + FullyQualifiedErrorId: 1601、Microsoft.SystemCenter.VirtualMachineManage 2016-05-15 19:01:33,890 警告 r.Cmdlets.GetSCCloudCmdlet 2016-05-15 19:01:34,373 INFO コマンドが終了値 '0' で正常に完了しました 2016-05-15 19:01:34,389 自動検出からの INFO リーダー文字セット: ASCII 2016-05-15 19:01:34,389 情報入力: ファイル [C:\cc-working\usage_files\VMUphours\Sydney\Output\VMHours_20160515.csv] 2016-05-15 19:01:34,404 INFO コレクション フィード: Sydney-VMHours-Collection
以下は私のスクリプトです:
$VMMServer = "calo-infvmm-10001.calocosn.local"
$a = ((Get-Date).ToUniversalTime()).ToString("yyyyMMddTHHmmss")
$clouds = Get-SCCloud -VMMServer $VMMServer
$vmHeader = [string]::Concat("VMId",",","SubscriptionId",",","VMName",",","OperatingSystem",",","Memory(MB)",",","CPUCount",",","DiskUsed(GB)",",","DiskAllocated(GB)",",","StorageClassification",",","Owner",",","CreationTime",",","SampleTime",",","Status",",","StartAction",",","StopAction")
Write-Output $vmHeader
foreach ($cloud in $clouds) {
$VMs = Get-SCVirtualMachine -Cloud $cloud
foreach ($VM in $VMs) {
$size = 0
$maxSize = 0
$classification = "Standard"
foreach ($disk in $VM.VirtualHardDisks) {
$classification = $disk.Classification
$size += $disk.Size / 1gb
$parentDisk = $disk.ParentDisk
while ($parentDisk) {
$size += $parentDisk.Size / 1gb
$parentDisk = $parentDisk.ParentDisk
}
$maxSize += $disk.MaximumSize / 1gb
}
$vmText = [string]::Concat($vm.ID,",",$vm.UserRoleID,",",$vm.Name,",",$vm.OperatingSystem,",",$vm.Memory,",",$vm.CPUCount,",",$size,",",$maxSize,",",$classification,",",$vm.Owner,",",$vm.CreationTime,",",$a,",",$vm.Status,",",$vm.StartAction,",",$vm.StopAction)
Write-Output $vmText
}
}