Powershell-Script (PowerCLI) VMWare ESXi bestimmte VM(s) starten

D4rkshadovv

Lt. Junior Grade
Registriert
Juni 2005
Beiträge
303
Hallo zusammen,


Was ich bräuchte wäre folgendes:

Script um folgendes zu tun:

- eine oder mehre VMs auf einem bestimmten ESX-Server starten
- Abfrage ESX-Server und VMs direkt nach dem Scriptaufruf


Momentan sieht es so aus:
Code:
function Load_PowerCLI ()
 {
 Add-PSSnapin VMware.VimAutomation.Core
 Set-PowerCLIConfiguration -DefaultVIServerMode multiple -Confirm:$false
 Set-PowerCLIConfiguration -DisplayDeprecationWarnings:$false -Confirm:$false
 }
 
function vCenter_Connect ()
 {
 clear
 [console]::ForegroundColor = "yellow"
 [console]::BackgroundColor= "black"
 #[string]$global:sourceVI=Read-Host "Bitte den ESX-Server angeben [Ip/FQDN] : "
 $User = "root"
 $PWord = ConvertTo-SecureString –String "" –AsPlainText -Force
 $source_credentials = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $PWor
 $file = "c:\TEMP\vmlist.txt"
 $vms = Get-Content $file
 Connect-VIServer "" -credential $source_credentials
 [console]::ResetColor()
 }
 

foreach($vm in $vms)

{

Get-VM $vm | where {$_.status -eq "powered off"}

Start-VM $vm -Confirm:$false 

Write-Host "$VM is starting"

}

Disconnect-VIServer -Confirm:$false


Die Ausgabe ist aber nur:

Disconnect-VIServer : Die Benennung "Disconnect-VIServer" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines
ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen
Sie den Vorgang.
In C:\Users\jholzhause\Desktop\Unbenannt3.ps1:36 Zeichen:1
+ Disconnect-VIServer -Confirm:$false
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Disconnect-VIServer:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


findet jemand den Fehler?
 
ähm, der Fehler steht doch da?

In Zeile 36 erkennt er den Befehl "Disconnect-VIServer" nicht als CommandLet.

Probier den Befehl doch mal ohne das Script.
 
in einem anderen Script funktioniert der Befehl ohne Probleme.

Wenn ich es mit:

Code:
function disconnect_vcenter ()
 {
 Disconnect-VIServer -Server * -Force -confirm:$false
 }

ersetze, passiert gar nichts. Script startet und wird direkt beendet. Fehler muss also noch wo anders liegen.


Ein Kollege hat sich gerade noch gemeldet. Es soll vor dem VM-Start noch eine bestimmte ISO-Datei gemountet werden.
Jemand eine Idee, wie man das einbauen kann?
 
Fällt dir nichts auf? Einmal hast du nen Server angegeben (*) und einmal nicht ?

--> CategoryInfo : ObjectNotFound: (Disconnect-VIServer:String)
 
Welche Ausgabe soll denn kommen? Er schließt doch nur die Verbindung.
Wenn du ihm mit -confirm eine Antwort mitgibst unterbindest du doch eine Ausgabe?
 
Ich hab ja nicht wirklich Ahnung von Scripting, aber müsstest du nicht deine definierten Funktionen aufrufen, damit die nutzbar sind?
 
Zurück
Oben