dom-escher
Goto Top

Powershell-Script-Verknüpfung mit Parameter "-emergency" in ZIEL als Schutz vor falscher Ausführung

Hallo Community,
ich denke es gibt dafür eine einfache, ggf einzeilige Lösung, aber erstmal zur Situation:

Wir nutzen ein Programm in dem ein Powershell-script bei Vorfall X gestartet werden soll.
Damit das Script nicht zufällig oder argwöhnisch gestartet werdexn kann, soll das Script nur dann
seine Befehle abarbeiten, wenn das Script mit dem Parameter "-emergency" gestartet wurde.

Eigentlich so, als würde man eine Verknüpfung erstellen und unter Eigenschaften in Feld
Ziel den zusatz -emergency beigefügt haben.

emergency-link

Der Versuch, das Ganze per
if (!$emergency) { return }
ans laufen zu bekommen, hat -warum auch immer - nicht funktioniert.
Egal was ich tue, er stoppt das Script ob mit oder ohne -emergency.

Script:
if (NOT $emergency) { return } #Abbruch, wenn Übergebener Parameter -emergency fehlt
#Ab hier ausführen, wenn Parameter -emergency mit übergeben wurde
write-host test


Ideen?
Mandatory und Switch scheinen mit zu aufwendig, vielleicht hat jemand ne fertige lösung?

Content-Key: 1746198376

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

Printed on: April 24, 2024 at 12:04 o'clock

Member: SlainteMhath
SlainteMhath Jan 21, 2022 updated at 10:14:18 (UTC)
Goto Top
Moin,

ich würde dem "emergency" in den Params als boolean mit einem Default von "$FALSE" mitgeben.

Dann kannst du mit "If($emergency)...." das script laufen lassen, sofern es mit "-emergency:$TRUE" gestartet wurde.

lg,
Slainte

/EDIT: @colinardo 's LÖsung ist elegangter, nimm die face-smile
Member: colinardo
Solution colinardo Jan 21, 2022 updated at 09:25:57 (UTC)
Goto Top
Servus,
da fehlt die Property IsPresent für das Testen auf Vorhandensein eines Parameters vom Typ [switch].
param(
    [switch]$emergency
)
If (!$emergency.IsPresent){
    write-error "This script only runs when the switch -emergency is used!" -Category InvalidArgument  
    return 1
}
# ....
# ..
Grüße Uwe
Member: Dom-Escher
Dom-Escher Jan 25, 2022 updated at 06:43:03 (UTC)
Goto Top
hi und nochmal dank für die Hilfe, aber :
ich habe das so gemacht wie beschrieben, dennoch , wenn ich in der Verknüpfung unter den Parameter -emergency setze, also das Skript eigentlich ausgeführt werd4en soll, bricht er ab.

zum ausführen habe ich eine bat geschrieben mit Ausführung plus Parameter, gleiches Problem.

face-sad
was mache ich falsch?

wieso bekomme ich den Sprung nicht hin ;-(
Member: colinardo
colinardo Jan 25, 2022 updated at 06:54:14 (UTC)
Goto Top
Dann hast du die Verknüpfung schon falsch erstellt oder die Executionpolicy nicht angepasst. Da du uns leider verschweigst wie du sie oder die Batch erstellt hast, ein Aufruf mit Parametern sollte so aussehen

powershell -EP Bypass -File "c:\vollständiger\pfad\zum\script.ps1" -emergency  
Klappt mit obigem Schnipsel einwandfrei!

Wichtig, der obige Schnipsel muss ganz am Anfang des Skriptes stehen damit er greifen kann !

Empfehlung als Lektüre
Powershell Leitfaden für Anfänger