Powershell Script mit Doppelklick starten?
Ich habe diesen Befehl:
Export-StartLayout -path C:\Users*\Documents\Kacheln_Win10.xml
Er sichert mir das Kachellayout von Windows 10. Da er das Layout des Nutzers sichert, wird er ohne Admin-Rechte gestartet. Und zwar, indem ich die Powershell "normal" starte und den oben Befehl eingebe. Soweit so gut.
Wie erstelle ich eine Verknüpfung, die ich auf den Desktop legen und via Doppelklick aufrufen kann?
3 Antworten
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.
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.
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).
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.
ganz lieben Dank!
Ich bin nämlich bis heute daran gescheitert, diese Scripte auch automatisch zu starten!