[SoD]r4z0r
Enthusiast
Thread Starter
- Mitglied seit
- 11.04.2009
- Beiträge
- 3.950
Hallo zusammen,
ich habe nen Problem bei einem Script zum Runterfahren von VMs mit der PowerShell und VMware PowerCLI.
Hier mein Script:
Mein Problem ist der Name der jeweiligen VM.
Über Get-VM bekomme ich folgendes als Output:
Ich benötige nur den reinen Namen für die ForEach Schleife, also 'shutdowntest01'. In $vmservers sollen also alle Namen der VMs stehen, die ich dann über $vm in der Schleife weiterverwenden kann.
Bei dem o. G. Konstrukt steht in $vm folgendes drin:
Und ich bekomme folgende Fehlermeldung:
Habt ihr Ideen wie ich das Problem gelöst bekomme?
Edit:
In der am Anfang erstellten .csv steht übrigens folgendes drin:
Könnte ich nicht davon irgendwie die Namen einlesen für $vmservers, nur halt ohne die Zeile "Name"?
ich habe nen Problem bei einem Script zum Runterfahren von VMs mit der PowerShell und VMware PowerCLI.
Hier mein Script:
Code:
# VMware PowerCLI Befehlssätze laden
Add-PSSnapIn -Name VMWare.VimAutomation.Core
& "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1"
# Login zum vCenter Server
Connect-VIServer -Server fsp-vcenter.fsp-gmbh.com -User xxx -Password xxx
# VMs in frc-vUmgebung herunterfahren
$vms = Get-VM -Location 'frc-vUmgebung' | Where-Object {$_.PowerState -eq 'PoweredOn'}
$vms | select Name | export-csv 'C:\VMwareTests\frc.csv' -NoTypeInformation
$vmservers = @()
ForEach ($v in $vms) {
$vmservers = $v |select name | format-list | out-string
}
echo 'VMServers: ' $vmservers
ForEach ($vm in $vmservers) {
$vmtoolsstatus = (Get-VM $vm | Get-View).Guest.ToolsStatus
echo 'VMTools: ' $vmtoolsstatus
echo 'VM Name: ' $vm
if ($vmtoolsstatus -eq 'toolsOk' -eq 'toolsOld') {
echo 'shutdown'
#Shutdown-VMGuest -VM $vm -Confirm:$false
}
else {
echo 'shutoff'
#Stop-VM -RunAsync -VM $vm -Confirm:$false
}
}
Mein Problem ist der Name der jeweiligen VM.
Über Get-VM bekomme ich folgendes als Output:
Code:
T:\> Get-VM shutdowntest01
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
shutdowntest01 PoweredOn 2 1,000
Ich benötige nur den reinen Namen für die ForEach Schleife, also 'shutdowntest01'. In $vmservers sollen also alle Namen der VMs stehen, die ich dann über $vm in der Schleife weiterverwenden kann.
Bei dem o. G. Konstrukt steht in $vm folgendes drin:
Code:
'Name : shutdowntest03'
Code:
Get-VM : 19.09.2014 11:02:59 Get-VM VM with name '
Name : shutdowntest03
' was not found using the specified filter(s).
Habt ihr Ideen wie ich das Problem gelöst bekomme?
Edit:
In der am Anfang erstellten .csv steht übrigens folgendes drin:
Code:
"Name"
"shutdowntest01"
"shutdowntest02"
"shutdowntest03"