Frage Powershell bei Server 2008 r2

Waterboy1989

Cadet 4th Year
Registriert
Jan. 2010
Beiträge
108
Hi Leute,

hab da mal eine Frage. Erstmal zum hintergrund.

Ich habe einen Server 2008 R2. Da laufen mehrere VMs drauf mit Hyper-V.
Jetzt habe ich Probleme mit der Datensicherung, die Ursache laut den Ereignissen hängt dann mit dem VSS zusammen. Damit ich das lösen kann muss ich die VMs pausieren damit das Backup durchläuft manuell habe ich das schon getestet und klappt dann auch. Jetzt will ich das automatisch durchlaufen lassen. Das vor jedem Backup die VMs pausiert werden. Das soll dann über die Aufgabenplanung mit einer .bat an die Powershell weitergegeben werden und die Pausiert das ganze.
Mit meinem Kollegen zusammen haben wir uns das so eben erstmal gedacht.

Jetzt komme ich zu dem Problem das wahscheinlich unter dem Win 2008r2 es garnicht geht weil er die Befehle "CMDlet" nicht kennt. Online komme ich nicht großartig weiter. Verschiedene Module habe ich versucht hinzuzufügen aber auch das klappt nicht so richtig.

Habt ihr noch andere Ideen?! Ist es überhaupt möglich mit dem 2008er?


Vielen Dank ich freue mich auf Vorschläge und Lösungen.
 
Welche CMDLets kennt der 2008er nicht? Was hast Du genau gemacht? Wie lautet die Fehlermeldung?
Importiert hast Du die CMDLets? Import-Module HyperV
 
Warum überhaupt der Umweg über ein Batchfile? Du kannst dein Powershellscript direkt mit "powershell -file <Pfad zu deinem Script>" aufrufen.
 
Ich kenne mich da auch nur wenig aus. Bisher noch nie was gemacht mit Powershell.
Das fängt schon an wie importiere ich den diese CMDlets :-D Aber suche ich Downloads kommt häufig das es unter 2008er die nicht gegeben hat diese neuen Befehle... Zwei Hyper Dateien hab ich versucht zu installieren aber da kommen nur fehler.
http://www.virtualizationadmin.com/...ister-microsoft-hyper-v-command-line-cli.html
an diesen Link hab ich mich bisschen gehalten aber das ging auch nicht...

Kann ich denn über Powershell das ganze Zeitgesteuert auch machen? Aber das ist ja schon der dritte Schritt ich muss es ja erstmal zum laufen bringen.
 
Was Evil geschrieben hat kannst Du wie eine Batch-Datei im Task Scheduler angeben...

Du mußt schon genauer schreiben, was nicht geht. Ohne Fehlermeldung können wir auch nur raten... Downloaden brauchst Du schonmal nichts.
 
Dein Link ist für Server 2008 nicht 2008 R2. Das ist insbesondere bei Hyper-V ein großer Unterschied. Wenn du keine konkreteren Angaben machen kannst (beantworte doch bitte einfach die Fragen von Frightener), wird es schwierig dir zu helfen.

Edit: Diese Anleitung ist neuer und auch für Server 2008 R2 geeignet:
Managing Hyper-V From the Command Line (Part 1)
 
Zuletzt bearbeitet: (Link ergänzt)
Sorry mir fehlen da echt Grundlagen.
was ich einfach mit einer Zeile ausprobieren wollte ist:
get-vm | where state -eq 'running' | suspend-vm
oder
Invoke-Command { get-vm | where state -eq 'running' | suspend-vm } –computername "Name meiner VM"

Da bekomme ich dann diesen Fehler:

[Name meiner VM] Beim Verbinden mit dem Remoteserver ist folgender Fehler aufgetreten: Die Anforderung kann von WinRM nicht v
erarbeitet werden. Bei Verwendung der Kerberos-Authentifizierung ist der folgende Fehler aufgetreten: Der Netzwerkpfad
wurde nicht gefunden.
. Mögliche Ursachen:
- Der angegebene Benutzername oder das angegebene Kennwort ist ungültig.
- Kerberos wird verwendet, wenn keine Authentifizierungsmethode und kein Benutzername angegeben werden.
- Kerberos akzeptiert Domänenbenutzernamen, aber keine lokale Benutzernamen.
- Der Dienstprinzipalname (Service Principal Name, SPN) für den Remotecomputernamen und -port ist nicht vorhanden.
- Der Clientcomputer und der Remotecomputer befinden sich in unterschiedlichen Domänen, zwischen denen keine Vertraue
nsbeziehung besteht.
Wenn Sie die oben genannten Ursachen überprüft haben, probieren Sie folgende Aktionen aus:
- Suchen Sie in der Ereignisanzeige nach Ereignissen im Zusammenhang mit der Authentifizierung.
- Ändern Sie die Authentifizierungsmethode; fügen Sie den Zielcomputer der Konfigurationseinstellung "TrustedHosts" f
ür WinRM hinzu, oder verwenden Sie den HTTPS-Transport.
Beachten Sie, dass Computer in der TrustedHosts-Liste möglicherweise nicht authentifiziert sind.
- Führen Sie den folgenden Befehl aus, um weitere Informationen zur WinRM-Konfiguration zu erhalten: winrm help confi
g Weitere Informationen finden Sie im Hilfethema "about_Remote_Troubleshooting".
+ CategoryInfo : OpenError: (:) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken





bei Suspend-vm -name "name meiner vm"

kommt das diese "suspend-vm" nnicht als Name einer CMDlet gefunden werden konnte.
 
Zuletzt bearbeitet:
Ich sattel das Pferd mal von hinten auf: Wie lautet die Fehlermeldung beim Backup und wieso versuchst du jetzt das Problem zu umgehen anstatt es zu lösen?
 
Waterboy1989 schrieb:
Invoke-Command { get-vm | where state -eq 'running' | suspend-vm } –computername "Name meiner VM"

Da bekomme ich dann diesen Fehler:

[Name meiner VM] Beim Verbinden mit dem Remoteserver ist folgender Fehler aufgetreten: Die Anforderung kann von WinRM nicht verarbeitet werden.
Das liegt daran, dass du versuchst, die CMDlets in der VM auszuführen. Das geht aus zwei Gründen schief:
1. Ist Powershell-Remoting standardmäßig deaktiviert
2. Die CMDlets funktionieren nur auf dem Rechner, auf dem du sie installierst. Das ist hier der Hyper-V-Host. Innerhalb einer VM kannst du sie nicht ausführen.

Suspend-vm -name "name meiner vm"

kommt das diese "suspend-vm" nnicht als Name einer CMDlet gefunden werden konnte.
Vermutlich hast du das Hyper-V Powershellmodul nicht geladen. Wenn du die von mir verlinkte Anleitung nutzt geht das so:
1. Powershell mit Adminrechten starten
2. Set-ExecutionPolicy Unrestricted
3. Import-Module “C:\Program Files\Modules\Hyperv\Hyperv.psd1”

Jetzt ganz simpel beginnen: get-vm sollte dir eine Liste deiner VMs anzeigen. Klappt das schon nicht, ist bei der Installation des Powershellmoduls etwas schiefgelaufen. Dann die Anleitung Schritt für Schritt nochmal durchgehen.

Es ist im Übrigen keine gute Idee, die VM vor den Backup anzuhalten. Herunterfahren wäre die deutlich sicherere Variante. Oder halt einfach das Problem mit dem Backup lösen.
 
Vielen Dank erstmal. Jetzt hat es geklappt das ich mit suspend und start-vm das ganze hinbekomme.
Jetzt geht es weiter das ich beim ausführen des scriptes wieder am anfang stehe ich muss also wieder über import module anfangen und im anschluss geht wieder das ganze mit suspend. Dann ist das nächste problem das es wieder nicht geht wegen den adminrechten.

batch:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""C:\Test\Test.ps1""' -Verb RunAs}"


ps1:
Get-ExecutionPolicy Unrestricted
Import-Module “C:\Program Files\Modules\Hyperv\Hyperv.psd1”
Suspend-vm "Projects"

write-hoste "..."

$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Write-Host
Write-Host "A"
Write-Host "B"
Write-Host "C"



Das ist der VSS Fehler:
Fehler bei der um ‎2015‎-‎06‎-‎17T18:31:02.328000000Z gestarteten Sicherung. Beim Erstellen einer Schattenkopie der zu sichernden Volumes durch den Volumeschattenkopie-Diensts ist der folgende Fehler aufgetreten: "2155348129". Suchen Sie in den Ereignisdetails nach einer Lösung, und führen Sie die Sicherung erneut aus, nachdem das Problem behoben wurde.

ereignis-id: 521
 
Also Problem gelöst. Ich habe es gefunden unter den Windows Ereignissen.

Anwendungs und Dienstprotokolle
Microsoft
Windows
hyper-v-vmms
admin
da stand bei einer virtuellen maschine zu wenig speicher. Da hab ich der sys partition 1
0gb mehr gegeben dann ging es wieder :-D

danke an alle

"Fehler beim Erstellen der Sicherung des virtuellen Computers "NAME VM". (ID des virtuellen Computers: C1C72988-F0C6-4A25-A6F2-21868EAED9D6)
 
Zurück
Oben