Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell, Foreach mit Ausnahme - Hyper-V Backup

Frage Microsoft

Mitglied: link611

link611 (Level 1) - Jetzt verbinden

16.05.2011, aktualisiert 13:48 Uhr, 5193 Aufrufe, 5 Kommentare

Hi,

Ich habe ein Powershell script, welches Sämtliche Virtuelle Maschinen vom Hyper-V auf den gespeichert Zustand versetzt dann exportiert und dann wieder startet.

01.
$VM_Service = get-wmiobject -namespace root\virtualization Msvm_VirtualSystemManagementService 
02.
 
03.
$ListofVMs = get-wmiobject -namespace root\virtualization Msvm_ComputerSystem -filter  "ElementName <> Name"   
04.
 
05.
  
06.
 
07.
foreach ($VM in [array] $ListOfVMs) 
08.
 
09.
10.
 
11.
                    $VMReturnState = $VM.EnabledState 
12.
 
13.
                    $VMName = $VM.ElementName 
14.
 
15.
  
16.
 
17.
                    if (($VM.EnabledState -eq 2) -or ($VM.EnabledState -eq 32768) -or ($VM.EnabledState -eq 32770)) 
18.
 
19.
20.
 
21.
                                         $VM.RequestStateChange(32769) 
22.
 
23.
                                         echo "Saving the state of $VMName" 
24.
 
25.
26.
 
27.
  
28.
 
29.
                    while (!($VM.EnabledState -eq 32769) -and !($VM.EnabledState -eq 3)) 
30.
 
31.
32.
 
33.
                                         Start-Sleep(1) 
34.
 
35.
                                         $VM = get-wmiobject -namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName='$VMName'" 
36.
 
37.
38.
 
39.
  
40.
 
41.
  
42.
 
43.
                    if ([IO.Directory]::Exists("$dest\TmpDir\$VMName")) 
44.
 
45.
46.
 
47.
                                         [IO.Directory]::Delete("$dest\TmpDir\$VMName", $True) 
48.
 
49.
50.
 
51.
  
52.
 
53.
                    echo "Exporting the VM" 
54.
 
55.
                    $status = $VM_Service.ExportVirtualSystem($VM.__PATH, $True, "$dest\TmpDir") 
56.
 
57.
                                         
58.
 
59.
                    if ($status.ReturnValue -eq 4096) 
60.
 
61.
62.
 
63.
                                         $job = [Wmi]$status.Job                     
64.
 
65.
                    
66.
 
67.
                                         while (!($job.PercentComplete -eq 100) -and ($job.ErrorCode -eq 0)) 
68.
 
69.
70.
 
71.
                                                             Start-Sleep(5) 
72.
 
73.
                                                             $job = [Wmi]$status.Job                     
74.
 
75.
                                                             echo $job.PercentComplete 
76.
 
77.
78.
 
79.
80.
 
81.
  
82.
 
83.
  
84.
 
85.
                    ##                Store the files on in a temp directory before moving them to their location and then remove the old files. 
86.
 
87.
  
88.
 
89.
                    if ([IO.Directory]::Exists("$dest\$VMName")) 
90.
 
91.
92.
 
93.
                                         [IO.Directory]::Move("$dest\$VMName", "$dest\$VMName-OldTmpDir") 
94.
 
95.
                                         [IO.Directory]::Move("$dest\TmpDir\$VMName", "$dest\$VMName") 
96.
 
97.
                                         [IO.Directory]::Delete("$dest\$VMName-OldTmpDir", $True) 
98.
 
99.
100.
 
101.
                    else 
102.
 
103.
104.
 
105.
                                         [IO.Directory]::Move("$dest\TmpDir\$VMName", "$dest\$VMName") 
106.
 
107.
108.
 
109.
                    
110.
 
111.
                    echo "Done with $VMName" 
112.
 
113.
                    $VM.RequestStateChange($VMReturnState) 
114.
 
115.
}

Jetzt soll aber eine VM des pools nicht mitgesichert werden.

Wie kann ich das realisieren?


MfG
Mitglied: danielmuc
16.05.2011 um 13:55 Uhr
Hi,

einfach das Array per Schleife in ein anderes kopieren und dabei ne Abfrage rein welche die nicht zu sicherende VM überspringt.

Zeilen aus Arrays können soweit mir bekannt in PS nicht gelöscht werden, nur deren Inhalt auf z.b. NULL gesetzt werden.
Hab mir deinen Code nciht komplett durchgelesen wie es da mit dem Error Handling ausschaut wenn das Array einen ungültigen Wert besitzt...


siehe:

http://www.colorconsole.de/PS_Windows/de/about_arrays.htm

suche nach:

BEARBEITEN EINES ARRAYS

Greatz Daniel.
Bitte warten ..
Mitglied: micneu
16.05.2011 um 14:16 Uhr
frag doch einfach die variable $VM ab und reagiere entsprechend

gruß michael
Bitte warten ..
Mitglied: link611
16.05.2011 um 14:29 Uhr
Danke schon mal für die Hilfe, hat schon sehr weiter geholfen.

Hab nur noch ein Problem:

01.
$t = $a[0,1 + 3..($a.length - 1)] 
Den Teil mit dem 3..($a.length-1) bekomm ich noch nicht so ganz hin, dass der das Array von Position 3 an, bis zum Ende nimmt.


Und zwar bekomme ich die Meldung:

Der Wert "System.Object[]" kann nicht in den Typ "System.Int32" konvertiert werden.
Bitte warten ..
Mitglied: danielmuc
16.05.2011 um 14:47 Uhr
Hi,

steht auch alles hier:

$a[2..($a.length-1)]

nicht verwundern wegen index wert 2 - der 1. datensatz fängt bei index [0] an.


Wobei ich den Vorschlag von Micneu auch gut finde - einfach eine if Abfrage:

IF ($VM.ElementName -ne "NOBACKUPVM")
{
gogogo
}
else
...
Bitte warten ..
Mitglied: link611
16.05.2011 um 15:02 Uhr
Wunderbar, funktioniert =)
Herzlichen Dank!


Hab' mittlerweile schon länger nicht mehr programmiert, deswegen hatte ich da nen kleinen Schwächeanfall ;D



Aber nochmal zu dem $a[2..($a.length-1)]

Da bekam ich vorhin den Fehler: Der Wert "System.Object[]" kann nicht in den Typ "System.Int32" konvertiert werden.


aber das wäre aber auch nicht so flexibel gewesen.



Also nochmal, Danke =)
Bitte warten ..
Ähnliche Inhalte
Hyper-V
Hyper-V über Powershell administrieren
gelöst Frage von Stefan007Hyper-V1 Kommentar

Hallo Leute, kennt ihr eine gute Anlaufstelle wenn es darum geht eine Umgebung mit Hyper-V-Host(Core) 2012/2016 aufzubauen? Ich kenne ...

Windows Server
Hyper-V Backup - Idee
gelöst Frage von cuilsterWindows Server4 Kommentare

Hallo, Wenn ich einen Snapshot von einer VM erstelle, dann schreibt Hyper-V doch nachfolgende Änderungen in den Snapshot oder? ...

Windows Server
Hyper-V und Windows Backup
gelöst Frage von GadlaeWindows Server23 Kommentare

Hallo Admins Ich habe im Moment ein paar Probleme mit dem Windows Backup. All paar Tage hängen sich meine ...

Batch & Shell
Powershell Foreach Key in Section
gelöst Frage von MarabuntaBatch & Shell2 Kommentare

Ich will Skriptseitig die ausgelesenen Versionen mit Soll-Versionen aus einer Ini-Datei abgleichen, nur wie prüfe ich so viele unterschiedliche ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 12 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 16 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 16 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 19 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...