오랜만에 글을 올리는 것 같네요.
SCVMM 콘솔에서 VM에 대한 정보를 한 화면에서 보고자 할 때 기본적으로 제공되는 컬럼(속성) 외에 운영자 관점에서 보고자하는 값들이 있을 수 있습니다.
SCOM에서는 Management Pack을 개발해 추가할 수 있지만, SCVMM에서는 좀 더 쉬운 방법을 지원하고 있습니다.
바로 사용자 지정 속성이라는 값을 이용하는 방법입니다. 일단 예를 들어, 기본적으로 제공되지 않는 속성 중 IP 주소를 추가해 보도록 하겠습니다.
1) 아무 가상 머신을 선택한 후 속성 창을 열어 사용자 지정 속성 탭으로 이동해 '사용자 지정 속성 관리' 버튼을 클릭합니다.
2) 만들기 버튼을 클릭합니다.
3) 추가할 속성의 이름을 입력하고 확인 버튼을 클릭합니다.
4) 추가한 속성을 선택한 후 추가 버튼을 클릭하고, VM의 속성 창을 닫습니다.
5) 그런 다음, VM 목록이 표시되는 화면에서 컬럼 제목에 마우스 우클릭을 하면 다음과 같이 추가한 속성이 보입니다.
속성을 추가하는 방법은 간단합니다. 이제 VM마다 속성을 열어서 IP 주소를 수동으로 입력하면 되겠네요.
하지만, 그건 너무 손도 많이 가고 IT Pro 스럽지가 않죠. 우리의 PowerShell을 이용해 자동으로 입력해 보겠습니다.
Import-Module virtualmachinemanager
$CustomProperty = Get-SCCustomProperty -Name "IP 주소"
Clear-Host
$VM = Get-SCVirtualMachine
foreach ($Item in $VM) {
$tmpIP = ""
$tmpName = $Item.Name
$tmpVMDesc = $Item.Description
$tmpCustom = $Item | Get-SCCustomPropertyValue -CustomProperty $CustomProperty
$tmpVMNIC = $Item | Get-SCVirtualNetworkAdapter | Sort-Object -Property SlotId
If ($tmpVMNIC) {
foreach ($Item2 in $tmpVMNIC) {
$IPv4 = $Item2.IPv4Addresses -Join ", "
If ($IPv4 -ne $NULL -and $IPv4 -ne "") {$tmpIP = $tmpIP + $IPv4 + ", "}
}
}
If ($tmpIP -ne $NULL -and $tmpIP -ne "") {$tmpIP = $tmpIP.Substring(0,$tmpIP.Length-2)}
If ($tmpCustom.Value -ne $tmpIP -and $tmpIP -ne "") {
Write-Host -fo White " - VM Name:"$tmpName
Write-Host -fo White " - Description:"$tmpVMDesc
Write-Host -fo White " - IP Address:"$tmpIP
Write-Host -fo Yellow -NoNewLine `n" Updating ..."
$outNull = Set-SCCustomPropertyValue -CustomProperty $CustomProperty -InputObject $Item -Value $tmpIP
$outNull = $Item | Refresh-VM
Write-Host -fo Yellow " Completed!" `n`n
}
}
위 스크립트는 IP 주소라는 사용자 지정 속성에 VM의 네트워크 인터페이스에 할당된 IP 주소를 자동으로 입력하는 스크립트입니다. 조금만 응용하시면, IP 주소 외에 VM의 여러 정보들을 사용자 지정 속성에 넣어 줄 수 있습니다.
저 같은 경우에는 IP 주소 외에 OS 이름(짧게), 저장된 위치(스토리지 정보)를 자동으로 입력해 주는 스크립트를 작성해 작업 스케줄러를 통해 자동으로 입력하도록 해 두었습니다.