Dukel 454 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 Wozu muss der Switch heruntergefahren werden? Der sollte einen Stromausfall aushalten können und beides andere (Email und Shutdown) sollte mit der APC Software funktionieren. Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 29. Mai 2019 Autor Melden Teilen Geschrieben 29. Mai 2019 vor 3 Minuten schrieb Dukel: Wozu muss der Switch heruntergefahren werden? Weil ich die Erfahrung gemacht habe, dass es LWL-Core Switche nicht so gerne mögen, wenn man da einfach Stecker zieht. Da es meinem Kollegen eben so geht, muss die Funktion rein. Ist beschlossene Sache. vor 4 Minuten schrieb Dukel: Email [...] APC Software funktionieren Die APC-Software kann aber nur ein Template. Die APC-Mails kommen zu mir in mein Admin-Postfach. Das Powershell-Script verschickt nochmal (zudem in meinem Namen, sonst ließt es keiner) eine Mail von wegen "Server fährt gleich runter, speichert eure Arbeiten und macht Programm X und Y zu!" Warum und ob wir das machen ist bereits intern beschlossen (und wenn ich händisch auf die Batch-Datei klicke funktioniert das auch alles), es geht nun nur noch um die Umsetzung. Grüße! Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 Ticket bei APC aufmachen? Startet Powershell, wenn die APC das triggert (siehst du im Task Manager)? Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 (bearbeitet) Also das Thema liegt gefühlte 5 Jahre zurück. Als Leitfaden ... 1. Folgender Skript wird initial getriggert und ruft einen PowerShellSkript auf - shutdown.bat - ich hatte hier direkt die vmware module eingebunden, kannst du bei Bedarf wegehhauen echo Shutdown of all VM’s and ESX hosts is launched at >> C:\tools\usv_shutdown\log\alert.txt echo %date% %time% >> C:\tools\usv_shutdown\log\alert.txt C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\tools\usv_shutdown\runasAdministrator.ps1'" -PSConsoleFile "C:\tools\usv_shutdown\vim.psc1" 2.PowerShellSkript - Initialisierung Powershell: Ich hatte damals Probleme mit den entsprechenden Berechtigungen, die wurden nicht sauber übergeben.Die Aufgabe hiervon ist die PowerShell für den eigentlichen Skript anzustarten. Hinweis: Die notwendigen Credentials müssen vorher angelegt werden. Da gibt es heute auch bessere Methoden. cls #legt Ausführungsbenutzer fest $user= "********" #lädt Passwortdatei $File="C:\tools\usv_shutdown\credentials\*******.pwd" $password = Get-Content $File | ConvertTo-SecureString #erzeugt die Credentials $credential = New-Object System.Management.Automation.PsCredential($user,$password) #eigentlicher PS Skript, der z.B. als Admin etc ausgeführt wird $script = "C:\tools\usv_shutdown\multithread.ps1" #Skript Aufruf Start-Process powershell -Credential $credential $script #-ArgumentList #schließt den Intialisierungsskript 3. Eigentlicher Zielskript - Hier kannst du dann mit deinen Bedürfnissen loslegen. Wie du Emailsverschickst usw, das darfst du gerne recherchieren. Du solltest erstmal in ruhe definieren was du möchtest. Sprich dich nochmal die Anforderungen prüfen. Beispiel: 5 Min Stromausfall danach erfolgt Triggerung. Unter 3. Werden bei mir parallel in mehrere Jobs - je ESXi Host (alle Gäste -VMs) und Bleche heruntergefahren. Hier gibt es sicher mehrere Wege ans Ziel... Man kann auch via Batch-Datei eine Art Triggerfile erzeugen, parallel läuft in der Prozessplanung der alle X Minuten die Datei prüft und bei Befund die Datei verschiebt und anschließend die gewünschten Routinen ausführt. bearbeitet 29. Mai 2019 von PowerShellAdmin 1 Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 29. Mai 2019 Autor Melden Teilen Geschrieben 29. Mai 2019 Danke dafür @PowerShellAdmin Wenn ich die CMD-Datei von Hand starte funktioniert das alles bis auf die Nutzerübergabe. Was muss denn in die PWD-Datei rein? Das Passwort im Klartext, oder verschlüsselt? Bei letzterem, welche Verschlüsselungsart wird denn dafür gebraucht? Testweise habe ich versucht $password mit $password = "HierDasPasswort" | ConvertTo-SecureString zu befüllen. Leider bekomme ich dann die Eingabemaske, in der ich meine Benutzerdaten eingeben soll. Grüße! Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 (bearbeitet) Die Passwortcontainer müssen vorab erzeugt werden. Das Auslesen innerhalb 2. sollte hier auch verbessert werden. Das Beispiel ist an der Stelle veraltet. Viel Spaß :) https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/convertto-securestring?view=powershell-6 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/convertfrom-securestring?view=powershell-6 bearbeitet 29. Mai 2019 von PowerShellAdmin Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 29. Mai 2019 Autor Melden Teilen Geschrieben 29. Mai 2019 vor 50 Minuten schrieb PowerShellAdmin: Die Passwortcontainer müssen vorab erzeugt werden Ich habe die Datei nun mit dem Code generiert (die Outputdatei auch entsprechend umbenannt, wie sie in Deinem Script steht): $credential = Get-Credential $credential.Password | ConvertFrom-SecureString | Set-Content c:scriptsencrypted_password1.txt Sie wird auch angelegt. Nur leider bekomme ich weiterhin das Abfragefenster für Benutzer und PW. Grüße! Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 (bearbeitet) Die Datei am besten mit den Zielnamen und Zielpfad initial erzeugen und sicherstellen, dass der Domainnutzer korrekt angegeben ist z.B. domain\sammaccountname. So wie ich es rauslese, wird hier eine Ver- und Entschlüsselung mit dem zusätzlichen Key empfohlen. bearbeitet 29. Mai 2019 von PowerShellAdmin Zitieren Link zu diesem Kommentar
testperson 1.680 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 Gerade eben schrieb PowerShellAdmin: So wie ich es rauslese, wird hier eine Ver- und Entschlüsselung mit dem zusätzlichen Key empfohlen. Wenn das Passwort auf PC1 verschlüsselt wird und auf PC2 entschlüsselt / genutzt werden soll, dann muss AFAIK ein Key genutzt werden. Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 Danke @Testperson für die Ergänzung ;) hing hier gerade noch an andern Themen man nennt es glaube ich Arbeit... bzw. bin jetzt auf'm Heimweg. Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 29. Mai 2019 Autor Melden Teilen Geschrieben 29. Mai 2019 Ich glaube einen Teil habe ich, ich musste den Benutzernamen mit Hostname\ davor angeben. Jetzt habe ich aber ein kleines Mysterium. Wenn ich die Batch-Datei, die übrigens bei mir so aussieht starte, bekomme ich weiterhin die Maske, dass ich meine Anmeldedaten eingeben muss. C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\tools\usv_shutdown\runasAdministrator.ps1' -PSConsoleFile "C:\tools\usv_shutdown\test.ps1" Wenn ich die RunAsAdministrator-Datei von @PowerShellAdmin in Powershell ISE öffne und dort starte läuft alles sauber durch, ohne Abfrage. cls #legt Ausführungsbenutzer fest $user= "SERVERNAME\Administrator" #lädt Passwortdatei $File="C:\tools\usv_shutdown\user.pwd" $password = Get-Content $File | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString #erzeugt die Credentials $credential = New-Object System.Management.Automation.PsCredential($user,$password) #eigentlicher PS Skript, der z.B. als Admin etc ausgeführt wird $script = "C:\tools\usv_shutdown\test.ps1" #Skript Aufruf Start-Process powershell -Credential $credential $script #-ArgumentList #schließt den Intialisierungsskript Wo hab ich den Knoten drin? Grüße! Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 (bearbeitet) Soweit es sich um einen lokalen Benutzer handelt, entspricht der Hostname der lokalen Domain. Zu dem Thema ist auch bei MSXFAQ ein umfassender Artikel. https://www.msxfaq.de/code/powershell/pspasswort.htm Schliesse Mal bitte ISE und teste den Aufruf direkt über die PowerShell.exe. Ich nehme an da stimmt was mit den Pfaden und / oder Variablen nicht. Ise ist da leider etwas trügerisch. Entferne bitte den folgenden Auszug, das ist nicht korrekt. Der gewünschte Script wird via Variable Script definiert, das PSC ist eine zusätzliche Erweiterung der Konsole - hatte ich lediglich für die vsphere Erweiterung verwendet. -PSConsoleFile "C:\tools\usv_shutdown\test.ps1 bearbeitet 29. Mai 2019 von PowerShellAdmin Zitieren Link zu diesem Kommentar
testperson 1.680 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 vor 4 Minuten schrieb HeizungAuf5: $password = Get-Content $File | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString Du liest ein verschlüsseltes Passwort aus der Datei ein, verschlüsselst es nochmal und entschlüsselst es wieder. Du müsstest wohl den mittleren Part raus lassen. Ansonsten teste es einfach erstmal mit Zugangsdaten im Plaintext. Wenn das läuft, den nächsten Step machen. Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 29. Mai 2019 Melden Teilen Geschrieben 29. Mai 2019 vor 8 Minuten schrieb testperson: Du liest ein verschlüsseltes Passwort aus der Datei ein, verschlüsselst es nochmal und entschlüsselst es wieder. Du müsstest wohl den mittleren Part raus lassen. Ansonsten teste es einfach erstmal mit Zugangsdaten im Plaintext. Wenn das läuft, den nächsten Step machen. da wundert mich der Dialog nicht ... Zitieren Link zu diesem Kommentar
HeizungAuf5 13 Geschrieben 29. Mai 2019 Autor Melden Teilen Geschrieben 29. Mai 2019 Übrigens erstmal sorry, dass ich hier wohl etwas rumdümple, aber - obwohl Admin in der Berufsbezeichnung - hab ich mit PowerShell normalerweise nicht viel zu tun. vor 26 Minuten schrieb PowerShellAdmin: Entferne bitte den folgenden Auszug, das ist nicht korrekt. Der gewünschte Script wird via Variable Script definiert, das PSC ist eine zusätzliche Erweiterung der Konsole - hatte ich lediglich für die vsphere Erweiterung verwendet. -PSConsoleFile "C:\tools\usv_shutdown\test.ps1 Jo, ist raus. vor 25 Minuten schrieb testperson: Du müsstest wohl den mittleren Part raus lassen. Danke, de Zeile sieht nun bei mir so aus: $File="C:\tools\usv_shutdown\user.pwd" $password = Get-Content $File ConvertFrom-SecureString vor 27 Minuten schrieb PowerShellAdmin: Schliesse Mal bitte ISE und teste den Aufruf direkt über die PowerShell.exe. Wenn ich die runAsAdministrator.ps1 mit einem Rechtsklick per PowerShell öffne, bekomme ich das Wenn ich das Programm über ISE starte, bekomme ich auch 2 Fehler angezeigt, es läuft aber ohne Passwort Abfrage durch Get-Content : Es wurde kein Positionsparameter gefunden, der das Argument "ConvertFrom-SecureString" akzeptiert. In C:\tools\usv_shutdown\runasAdministrator.ps1:6 Zeichen:13 + $password = Get-Content $File ConvertFrom-SecureString + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-Content], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommand New-Object : Für "PSCredential" und die folgende Argumenteanzahl kann keine Überladung gefunden werden: "2". In C:\tools\usv_shutdown\runasAdministrator.ps1:8 Zeichen:15 + ... redential = New-Object System.Management.Automation.PsCredential($use ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [New-Object], MethodException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand vor 29 Minuten schrieb testperson: Ansonsten teste es einfach erstmal mit Zugangsdaten im Plaintext. Wenn das läuft, den nächsten Step machen. Hab ich mal so umgesetzt: $File="C:\tools\usv_shutdown\user.pwd" $password = "HierDasPasswortDenken" #erzeugt die Credentials $credential = New-Object System.Management.Automation.PsCredential($user,$password) und auch mal mit $credential = New-Object System.Management.Automation.PsCredential($user,"HierDasPasswortDenken") In beiden Fällen ist es so wie vorher. Ich bekomme in der ISE einen Fehler (siehe unten) und wenn ich die CMD-Datei oder die ps1 Datei per rechtsklick starte, bekomme ich wieder die Abfrage. New-Object : Für "PSCredential" und die folgende Argumenteanzahl kann keine Überladung gefunden werden: "2". In C:\tools\usv_shutdown\runasAdministrator.ps1:8 Zeichen:15 + ... redential = New-Object System.Management.Automation.PsCredential($use ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [New-Object], MethodException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand Grüße! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.