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 Cmdlets
in eine *.ps1
Datei 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“ ( Cmdlets
usw.) 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
...