2013. 9. 26. 09:38
PowerShell Script - 백업되고 있지 않은 VM을 자동으로 DPM 보호 그룹에 추가 SystemCenter2013. 9. 26. 09:38
#####################################
$ClusterName = "<Hyper-V 클러스터 이름>"
$ClusterName = "<Hyper-V 클러스터 이름>"
$DPMServerName = "<DPM 서버 이름>"
$PGPrefix = "<보호 그룹 접두어>"
$VMPrefix = "<VM 이름 접두어>"
#####################################
If ($DPMServerName -notlike "*.$env:userdnsdomain")
{
$DPMFQDN = $DPMServerName+".$env:userdnsdomain"
}
Else
{
$DPMFQDN = $DPMServerName
}
Connect-DPMServer $DPMFQDN
$Cluster = Get-DPMProductionCluster $DPMFQDN | Where {$_.ClusterName -like "$ClusterName.*"}
$NotProtectedVM = Get-DPMProductionVirtualName $Cluster | Where {$_.MachineName -like "SCVMM*$VMPrefix*" -and $_.ServerProtectionState -ne "HasDatasourcesProtected"}
# 초기 복제 시간 설정 (밤 12시)
$tmpDate = Get-Date
$tmpDate = [String]$tmpDate.Year+"-"+[String]$tmpDate.Month+"-"+[String]$tmpDate.Day
$tmpDate = [DateTime]$tmpDate
$ReplicaCreationTime = [DateTime]$tmpDate.AddDays(1)
# 백업되고 있지 않은 VM을 보호 그룹에 추가
# 보호 그룹은 구성원 수가 가장 적은 그룹 선택
foreach ($Item in $NotProtectedVM)
{
$TargetDS = $Item | Get-DPMDatasource -Inquire | Where {$_.ObjectType -like "*Hyper-V*"}
If (! $TargetDS) {continue}
Else
{
$TargetPG = Get-DPMProtectionGroup $DPMFQDN | Where {$_.Name -like "$PGPrefix*"} | Sort-Object -Property NumberOfShortTermDatasources,TotalDiskReplicaSize | Select-Object -First 1
$MPG = Get-DPMModifiableProtectionGroup $TargetPG
$NPG = Add-DPMChildDatasource -ProtectionGroup $MPG -ChildDatasource $TargetDS
$DiskAlloc = Get-DatasourceDiskAllocation -Datasource $TargetDS
Set-DatasourceDiskAllocation -Datasource $TargetDS -ProtectionGroup $MPG
Set-DPMReplicaCreationMethod -ProtectionGroup $MPG -Later $ReplicaCreationTime
Set-DPMProtectionGroup $MPG
}
}