Können vSphere PowerCLI-Cmdlets aus einer PS1-Datei ausgeführt werden?

Können vSphere PowerCLI-Cmdlets aus einer PS1-Datei ausgeführt werden?

Ich möchte ein Administratorskript schreiben, das:

  • Löschen einer VM aus vSphere
  • Löschen Sie den DNS-Eintrag der VM
  • Geben Sie die IP-Adresse der VM mit unserem Windows DHCP-Server frei

Ich kann das erste Element über vSpheres PowerCLI erreichen und die letzten beiden Elemente über PowerShell " Cmdlets". Darüber hinaus kann ich diese Cmdletsin eine *.ps1Datei einfügen und die Datei von der Shell aus ausführen.

Erste Untersuchungen zeigen, dass PowerCLI PowerShell nur umschließt/erweitert und im Grunde nur aus seinen eigenen vSphere-zentrierten besteht Cmdlets. Daher frage ich mich: Kann ich PowerCLI-„Code“ ( Cmdletsusw.) zusammen mit anderem PowerShell-Code in eine PS1-Datei einfügen und ihn wie eine normale PS1 ausführen?

Antwort1

kann ich PowerCLI-„Code“ (Cmdlets usw.) zusammen mit anderem PowerShell-Code in eine PS1-Datei einfügen und ihn wie eine normale PS1 ausführen?

Ja. Aber wenn es wie erwartet funktionieren soll (wie bei Verwendung der PowerCLI-Konsole), müssen Sie die Umgebung initialisieren. Wie das geht, können Sie sehen, wenn Sie sich die Verknüpfung „VMware vSphere PowerCLI.lnk“ ansehen. Das Ziel ist:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -noe -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""

Im Einzelnen:

  • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Die Powershell-Binärdatei

  • -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1"

Abkürzung für -PSConsole, wodurch die angegebene vim.psc1-Konsole lädt.

  • -noe

Abkürzung für -NoExit„nicht schließen“ nach dem Ausführen der Startbefehle.

  • -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""

Abkürzung für -Command, welcher Punkt die Datei [beachten Sie, dass der Pfad in Anführungszeichen gesetzt ist] Initialize-PowerCLIEnvironment.ps1 in die Sitzung einbindet.

Sie können dies komprimieren und die Initialisierung in eine beliebige .ps1-Datei einfügen. Dieses Stub-Beispiel sollte Ihnen den Einstieg erleichtern.

# This is the main magic.
Add-PSSnapin VMware.VimAutomation.Core

# Dot source the PowerCLI init script
. 'C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1'

# We're up and running with "PowerCLI", do some VM stuff.
Connect-VIServer vcenter-01
Get-VM
...

verwandte Informationen