Scripts para identificar servidores Hyper-V em um domínio
Recentemente tive que descobrir uma maneira para identificar quais os servidores Windows Server 2008 e R2 no domínio que tem o Hyper-V instalado.
Quando você instala o Hyper-V em um servidor, ele cria um tipo de objeto no Active Directory do tipo “object class” chamado serviceConnectionPoint (SPC), e preenchido com o valor “Microsoft Hyper-V”.
Desta forma, podemos fazer pesquisas LDAP no Active Directory com estas condições, você pode usar scripts VBS e PowerShell, veja eles abaixo :
Script VBS :
On Error Resume Next
Const SCP = "Microsoft Hyper-V"
' Add as many lines as needed for the domains in your org.
DoQuery "DC=contoso,DC=com", "CONTOSO", SCP
Sub DoQuery(szDomainDN, szDomainShortName, szSCP)
Set oConnection = CreateObject("ADODB.Connection")
Set oCommand = CreateObject("ADODB.Command")
oConnection.Provider = ("ADsDSOObject")
oConnection.Open "Ads Provider"
oCommand.ActiveConnection = oConnection
oCommand.Properties("Page Size") = 99
oCommand.Properties("Searchscope") = &H2 'ADS_SCOPE_SUBTREE
oCommand.Properties("Chase Referrals") = &H60
'ADS_CHASE_REFERRALS_ALWAYS
oCommand.CommandText = _
"select distinguishedName from 'LDAP://" & _
szDomainDN & "' " & _
"where objectCategory='serviceConnectionPoint' " & _
"and cn='" & szSCP & "'"
Set oRecordSet = oCommand.Execute
If Err Then
wscript.echo _
"ERROR: Unable to find Domain Rooted at: " & _
szDomainDN
exit sub
End If
If Not oRecordSet.EOF Then
wscript.echo szDomainShortName & ":" & _
oRecordSet.RecordCount
' If you want to enumerate the machine names,
' uncomment this block of code
oRecordSet.MoveFirst
Do Until oRecordSet.EOF
szNodeName = _
oRecordSet.Fields("distinguishedName")
'Trim "CN=<szSCP>,CN="
szNodeName = _
mid(szNodeName, InStr(szNodeName,",CN=")+4)
'Trim the domain DN
szNodeName = _
Left(szNodeName,InStr(szNodeName,",")-1)
wscript.echo szNodeName
oRecordSet.MoveNext
Loop
else
wscript.echo szDomainShortName & ": 0"
end if
set oRecordSet = Nothing
set oCommand = Nothing
oConnection.Close
set oConnection = Nothing
End Sub
Troque a linha em amarelo pelo nome do seu domínio, salve o conteúdo com o nome ListaHyper.vbs, abra um prompt de comando como Administrator e execute C:\cscript ListaHyper.vbs para salvar o resultado em um arquivo texto execute C:\cscript ListaHyper.vbs > HyperVServers.txt. O arquivo abaixo mostra o nome do domínio seguido pelo número de servidores e abaixo o nome de todas as máquinas.
Script PowerShell
Abra o PowerShell :
Importe o módulo do Active Directory
C:\Import-Module ActiveDirectory
Execute o comando :
Get-ADObject –Filter {ObjectClass –eq “serviceConnectionPoint” –and Name –eq “Microsoft Hyper-V”} | select DistinguishedName
O resultado será uma lista de todos os servidores e seu caminho DN no domínio.
PS: Este script só funciona para servidores Hyper-V que são membros do domínio do Active Directory
Divirtam-se !
Comments
Anonymous
January 01, 2003
Parabéns pelo Blog Gilson !!! A opção em PowerShell é muito simples e Prática de utilizar, será de grande utilidadeAnonymous
January 01, 2003
Show,parabéns pelo tópico !Anonymous
January 01, 2003
Puxa, to sofreeeendo, mas acho que fiz certo. Aproveitar pra te dizer que adicionei você a lista de Blog´s MCPs do meu Blog. Fica a vontade pra conferir. http://idmcp.blogspot.com.br/Anonymous
October 22, 2014
Obrigada Gilson! Show. Me ajudou muito!