PowerShell vrijdag: verbinding maken met vCenter

Gepubliceerd op 13 november 2015 • 3 min leestijd • 493 woorden
Voor onze eerste cmdlet op PowerShell Friday gaan we verbinding maken met vCenter. Voordat we iets nuttigs kunnen doen op een ESXi-host of vCenter…
PowerShell vrijdag: verbinding maken met vCenter

Voor onze eerste cmdlet op PowerShell Friday gaan we verbinding maken met vCenter.

Voordat we iets nuttigs kunnen doen op een ESXi-host of vCenter, moeten we verbinding maken met de server. Verbinding maken met vCenter of een ESXi-host gebeurt met de opdracht:


Powershell
Connect-VIServer

Als u dit invoert bij de PowerCLI-prompt, wordt u om de waarden gevraagd.

Als u de certificaten voor uw hosts of vCenter-server niet heeft gewijzigd, krijgt u een waarschuwing over het certificaat ‘WAARSCHUWING: er waren een of meer problemen met het servercertificaat’ enzovoort. Als u het certificaat niet heeft gewijzigd, is dit een normaal bericht. Belangrijker is de boodschap:  ‘WAARSCHUWING: HET STANDAARDGEDRAG OP ONGELDIG SERVERCERTIFICAAT ZAL IN EEN TOEKOMSTIGE RELEASE VERANDEREN’, die voor zich spreekt.

Connect-VIServer vraagt ​​u om een ​​gebruikersnaam en wachtwoord, waarna u een object krijgt dat de verbinding met vCenter bevat.

Wanneer u nu een opdracht uitvoert, wordt deze uitgevoerd met de verbinding die u heeft ingesteld, bijvoorbeeld Get-VM om alle VM’s in uw vCenter weer te geven.

Als je niet van pop-ups houdt en alles vanuit een script wilt doen, kun je het volgende doen:


Powershell
Connect-VIServer -Server vc01.domain.local -User [email protected] -Password ThisIsNotSecure

Wanneer je dit in je scripts wilt gebruiken is het uiteraard niet erg veilig. Uw wachtwoord is zichtbaar in platte tekst en zal zichtbaar zijn in uw geschiedenis als u het op deze manier vanaf de opdrachtregel uitvoert. Als je gebruikersnamen en wachtwoorden in tekstbestanden wilt gebruiken, kun je hiervoor beter het standaard PowerShell-materiaal gebruiken, het PSCredential-object. You can construct a PSCredential object with:


Powershell
$credentials=Get-Credential

Nogmaals, als u de prompt niet wilt, kunt u deze volledig op de opdrachtregel genereren:


Powershell
$credentials=Get-Credential -UserName [email protected] -Message "Enter your vCenter password"

Er wordt om een ​​wachtwoord gevraagd. Als u nu verbinding wilt maken met vCenter, kunt u het volgende gebruiken:


Powershell
Connect-VIServer -Server vc01.domain.local -Credential $credentials

Als u tegelijkertijd verbinding wilt maken met meer vCenter-servers, of gewoon niet van generieke verbindingen houdt, is er goed nieuws. U kunt het verbindingsobject aan een variabele toewijzen. Met die variabele kun je andere dingen doen, zoals weergegeven in het volgende voorbeeld:


Powershell
$vc = Connect-VIServer -Server vc01.domain.local -Credential $credentials
Get-VM -Server $vc
```## Veilige tekenreeksen

Nu weet ik dat ik zei dat dit bericht ging over het verbinden met vCenter, maar ik denk dat het erg belangrijk is om vanaf het begin veilig te zijn, dus het hele "wachtwoord in een script" is niet iets dat je zou moeten doen. Maar soms kun je er niet omheen om accounts met wachtwoorden in je scripts te gebruiken. In dat geval kun je beter het volgende gebruiken:

Powershell CredsFile="PowerShellCreds.txt"ReadHostAsSecureStringConvertFromSecureStringOutFileCredsFile = "PowerShellCreds.txt" Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File CredsFile


Als u dat wachtwoord later wilt gebruiken, kunt u het bestand met het gecodeerde wachtwoord opnieuw lezen:

Powershell credsFile="PowerShellCreds.txt"credsFile = "PowerShellCreds.txt" securePassword = Get-Content $CredsFile | ConvertTo-SecureString

credentials=NewObjectSystem.Management.Automation.PSCredential("administrator@vsphere.local",credentials = New-Object System.Management.Automation.PSCredential ("[email protected]", securePassword) Connect-VIServer -Server vc01.domain.local -Credential $credentials

Zie ook

    Follow me