spades88
Goto Top

PS Skript funktioniert bei mir, aber bei meinen Kollegen nicht

Hallo in die Runde,

ich habe 2 PS-Skripte für meine Abteilung geschrieben um uns die Arbeit zu erleichtern.
Da "Skript 2" administrativ gestartet werden muss, startet "Skript 1" "Skript 2" mit Credentials.
Sieht dann so aus:
skript1

Bei mir klappt das auch problemlos, aber sobald meine Kollegen das "Skript 1" starten wird es komisch.

Das erste was mit auffällt ist das bei meinen Kollegen für einen Bruchteil von Sekunden folgende Fehlermeldung beim Start des "Skript 1" aufkommt:
skript1_error

Und danach erfolgt, trotz definitiv korrekt eingegebener Adminzugangsdaten, die im Skript hinterlegte Fehlermeldung
"Entweder ist der User 'XY' oder das Passwort falsch"

Weitere Fakten dazu:
  • Bei meinen Kollegen und mir ist in Powershell die ExecutionPolicy "RemoteSigned" festgelegt.
  • Beide Skripte habe ich signiert
  • der einzige technische Unterschied zwischen meinen Kollegen und mir ist,
dass ich mit Windows 11 / Powershell 5.1. (Build 22621.3958) arbeite und meine Kollegen mit
Windows 10 / Powershell 5.1 (Build 17763.5933) arbeiten.

Ansonsten arbeiten wir mit den selben Berechtigungen.

Reichen diese kleinen Unterschiede im Build schon aus dass das Skript bei den Kollegen nicht mehr funktioniert oder was könnte die Ursache sein?

Habt Ihr noch eine Idee?

Content-ID: 668405

Url: https://administrator.de/contentid/668405

Ausgedruckt am: 21.11.2024 um 12:11 Uhr

pcpanik
pcpanik 26.09.2024 aktualisiert um 13:20:11 Uhr
Goto Top
Du könntest auf den PCs Deiner Kollegen per Registry die Signaturprüfung temporär deaktivieren und testen, ob es daran liegt. DIe Fehlermeldung deutet ja darauf hin.

Mit Adminrechten per Regedit
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ExecutionPolicy
auf unrestricted setzen.

Wenn die mit GPO gesetzt wurde, wird das beim nächsten gpupdate artig wieder überschrieben.

Sofern das dann läuft ist die Frage, ob die PCs der Kollegen das Zertifikat, mit dem Signiert wurde, kennen.

Ergänzung zum Verständnis:
Der öffentliche Schlüssel des CodeSigning-Zertifikates muss auf den Systemen auf denen die Skripte ausgeführt werden sollen als vertrauenswürdig eingestuft sein.
Das geschieht über den Teilschlüssel „Vertrauenswürdige Herausgeber“ im Zertifikatsspeicher des Benutzers oder Computers.
150704
150704 26.09.2024 aktualisiert um 13:40:42 Uhr
Goto Top
Ich seh da diverse Scripting-Fehler, das man eigentliche "Boolean" Werte durchgehend überall als Strings mit Like vergleicht, arghhhhhhhhhh, mit Hammer auf Finger klopf ....
$? -like "false"
Autsch, Autsch Autsch Autsch ........

Warum Skript als Bild?? 🤔

Die Executionpolicy ist für Admins eh nur Fassade, mit einem "-Bypass" beim Aufruf entledigt man sich davon.

Ich würde empfehlen nochmal ganz vorne bei den Basics anzufangen.
https://learn.microsoft.com/de-de/powershell/scripting/learn/ps101/01-ge ...

Good luck.
Spades88
Spades88 27.09.2024 um 10:51:13 Uhr
Goto Top
@pcpanik:
Erstmal vielen Dank für deinen Lösungsansatz.
Ich werde das nächste Woche einmal ausprobieren.

@150704
Ich verstehe was du mir damit sagen möchtest und ja, da ist noch ganz ganz viel Luft nach oben.
Ich bin aktuell in totaler Anfänger und bin für jede konstruktive Kritik dankbar.
Also dir vielen Dank.

Meine Frage ist dazu aber, auch wenn das Skript so wie es ist schlecht geschrieben ist, sollte es nicht trotzdem für den Zweck zumindest funktionieren oder kann es doch dazu führen das der Fehler bei meinen Kollegen ausgelöst wird?
ThePinky777
ThePinky777 27.09.2024 aktualisiert um 14:04:16 Uhr
Goto Top
starte die scripte so:
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -executionpolicy Unrestricted -File "C:\PowerShellScript.ps1"  

oder

powershell.exe -executionpolicy Unrestricted -File "C:\PowerShellScript.ps1"  
Spades88
Lösung Spades88 30.09.2024 um 10:43:09 Uhr
Goto Top
Vielen Dank für die ganzen Hilfestellungen.
Wir konnten den Fehler jetzt finden.

Ursache ist bzw. war, dass bei den Kollegen die ExecutionPolicy nicht überall auf "RemoteSigned" sondern stellenweise noch auf "Undefined" gesetzt war.
Nach Anpassung dieser können meinen Kollegen das Skript nutzen.

Trotzdem noch einmal vielen Dank