Powershell Script mit Doppelklick starten?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Du erstellst eine gewohnter Weise eine Verknüpfung:

  • Mit recht auf Deine PS1-Scriptdatei klicken und auf eine leere Stelle ziehen und loslassen. Verknüpfung hier erstellen....
  • mit rechts auf die Verknüpfung klicken ...Eigenschaften Verknüpfung-Tab...
  • Option Ziel folgendermaßen ändern:
powershell.exe -ExecutionPolicy Bypass -c "& 'LW:\Dein Pfad\DeinScript.ps1'"

wichtig!

-ExecutionPolicy Bypass hebelt das Sicherheitsmanagement aus. (nicht auf fremde Scripte anwenden)

Achte auf die Gänsefüßchen: ein Doppelquotepaar umschließt das mit -c oder -command spezifizierte Kommando. Darin befindet sich der Dateipfad innerhalb eines Singlequotepaares.

Bild zum Beitrag

Alternativ kann man ein Powershellscript auch in einer HybridBatch unterbringen .

Eine HybridBatch ist eine ganz normal .cmd-Datei.

Mit ein Paar Tricks werden die Batch-Kommandos als Kommentare der zweiten Sprache getarnt und die Batch-datei hier als Powershellscript erneut ausgeführt.

Dies spart Verrenkungen wie obige Verknüpfung . Eine solche Hybrid-Batch lässt sich einfach per Doppelklick starten.

HybridDemo.cmd

<# : Batch Abschnitt ,Batch sieht in dieser Zeile die Eingabe aus der Datei # an ein SprungLabel, Powershell sieht den begin eines Kommentars. 
@echo off 
chcp 65001 >nul

  rem alles von hier  bis  :run dient der Demo....
if "%~1" neq "" goto :run
echo das ist die Batch...
echo Hilfe: Ziehe  Dateien auf  die die Batch "%~nx0"...
echo ...oder auch nicht 
echo Die Dateinamen werden an das Powershellscript weitegeleitet.
timeout 2 >nul
color 1f
cls
:run

  rem Diese Zeile  nicht veränden! startet Powershell ohne Rechtevergabe und übergibt Parameter über die Pipe
(for %%I in ("%~f0" %*) do @echo:%%~I)|powershell -noprofile "[Array]$argv = $input|?{$_}; iex (${%~f0} | out-string)"

  rem das folgende  pause hält das Fenster  offen....
pause
exit /b
: Ende Batch  
:: Ab der nächsten Zeile  beginnt das eigentliche PowershellScript, da kannst Du Powershellcode einfügen wie es Dier beliebt... #>
#ab hier  Dein Code...
"Jetzt bin ich in der Powershell"
$argv |%{ "`$argv[{0}]: $_" -f $i++};$i=$Null;
$ScriptName=$argv[0]
  #alle übergebenen Parameter außer $argv[0] der Variable Params zuweisen:
$Params=$argv|Select -Skip 1
""
"Name der Hybridbatch:"
$ScriptName
  #Params ist ein Array. Einzelne Elemente können über $Params[IndexNummer] aufgerufen werden.
if ($Params) {
    ""
    "an die Batch uebergebene Parameter:"
    $Params
}
"
"
  #cursor nach links oben ;)
[console]::CursorLeft=0
[console]::CursorTop=0 

Diese Methode erlaubt es sogar per Drag and Drop Dateien an das script zu übergeben.

Hybrid-Batch ist so ziemlich das Trickreichste, was verschiedenste Scriptsprachen zu bieten haben. und ist nicht nur auf eine Synthese von Powershell beschränkt.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
 - (Computer, Technik, Spiele und Gaming)

Mauritan 
Beitragsersteller
 24.10.2019, 13:30

ganz lieben Dank. Dein Posting ist so gut, dass ich es kopieren werde und in meinen EDV-Codeschnipsel-und-Tricks-Ordnrer ablegen!

Du kannst den Begehl in ein Powershell-Script schreiben. Dazu z.B. in Notepad++ neue Datei erstellen und Code schreiben, dann Datei als .ps1 speichern. Dann solltest du die Datei mit Doppelklick/Verknüpfung starten können (bin mir aber nicht sicher, habe selbst noch nie so ein Script erstellt).

Woher ich das weiß:Recherche

Mauritan 
Beitragsersteller
 23.10.2019, 19:58

danke für die Idee. Sie ist naheliegend, daher war ich schon soweit. Nur lief es nicht.

Noch ein Tipp: Du brauchst Notepad++ gar nicht, sondern Du gehst auf das icon Powershell und wählst dort mit Rechtsklick drauf "ise als admin starten". Dann öffnet sich ein Editor, der nicht mal schlecht ist. Ein Button rechts oben besagt "script", damit kann man ps1-Dateien erstellen.

Deren Start gestaltet sich leider schwierig.

Man kann auch Powershell-Skripte in EXE-Dateien umwandeln. Das geht damit: https://gallery.technet.microsoft.com/scriptcenter/PS2EXE-GUI-Convert-e7cb69d5 Damit geht das dann einfacher.

Danach kann man die EXE-Datei mit Inno Setup https://www.jrsoftware.org/download.php/is.exe in eine Installationsroutine (setup.exe) verpacken.


Mauritan 
Beitragsersteller
 20.01.2020, 18:48

ganz lieben Dank!

Ich bin nämlich bis heute daran gescheitert, diese Scripte auch automatisch zu starten!