shell:startup programm startet nicht?
Geht um ein skript das automatisch ausgeführt werden soll, damit sollen Laufwerke freigeschaltet werden
Habe unter U:/Auto.ps1 Datei angelegt
Nun gehe ich auf win + r, shell:startup
Lege dort eine neue Verknüpfung an mit
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command"& ' [U:]\AUTO.ps1' "
Führe ich aus, tut sich nichts, wo liegt der Fehler?
Hier ist die Anweisung
2 Antworten
Du hast ein Leerzeichen zwischen -Command und "InlineKommandoString" vergessen. ist zwar in diesem Fall nicht kritisch, aber innerhalb des 'Literals' sollten weder vor noch hinter dem angegebenen Pfad Leerzeichen stehen!
So sieht die Kommandozeile richtig aus:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "& 'U:\AUTO.ps1'"
-command kannst Du weglassen oder oder zu -c abkürzen
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -c "& 'U:\AUTO.ps1'"
oder
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "& 'U:\AUTO.ps1'"
Kleines extra von mir:
Verknüpfungen im Autostart sind etwas heikel, da sich das Ziel ändern kann.
Allerdings lassen sich Powershelldateien im Autostart nicht direkt ausführen.
Dafür gibt's einen eleganten Trick. Man speichert das Powershellscript als Batch (.cmd-Datei) und fügt vor dem Powershell ein Paar spezielle Zeilen Batchcode ein.
Powershell-Hybrid-Batch.cmd
<# : Batch Abschnitt
start "" powershell -c "&([Scriptblock]::Create((gc '%~f0' -enc UTF8 -raw )))"
exit /b
: Ende Batch und Powershellkommentar #>
#hier Dein Powershellcode:
Write-Host Hallo Welt -fo green
Write-Host Γεια σου Κόσμο -fo mag
Write-Host Viele Grüße aus Powershell -fo red
pause
Hier noch eine kleine Batch , welche aus eine beliebigen .ps1-Datei eine solche HybridBatch im Autostart erzeugt. Einfach eine .ps1-Datei auf die folgend Batch ziehen.
create Autostart PoshScript.cmd
@echo off
chcp 65001 >nul
if "%~1"=="" (
echo ziehe die .ps1-Datei welche im Autostart gestartet werden soll,
echo auf Diese Batch-Datei: "%~nx0"
timeout 5 >nul
exit /b
)
set "AutoStartFolder=%AppData%\Microsoft\Windows\Start Menu\Programs\Startup"
set "HybridScriptName=%~nx1.cmd"
set "DestinationPath=%AutoStartFolder%\%HybridScriptName%"
echo creating Powershell-Batch HybridScript:
echo "%DestinationPath%"
rem Batch-Stub für das PowershellSript erzeugen...
>"%DestinationPath%" echo ^<# : Batch Abschnitt
>>"%DestinationPath%" echo start "" powershell -c "&([Scriptblock]::Create((gc '%%~f0' -enc UTF8 -raw )))"
>>"%DestinationPath%" echo exit /b
>>"%DestinationPath%" echo : Ende Batch und Powershellkommentar #^>
>>"%DestinationPath%" echo:
rem PowershellScript an die Zieldatei anhängen
>>"%DestinationPath%" type "%~f1"
rem mal zum probiern den Autostart im Explorer öffnen
start "" "shell:startup"
echo fertig...
pause
Ganz nebenbei haben meine Hybriden den Vorteil problemlos mit Umlauten und Unicode-Text zurechtzukommen.
- der OrdnerName "C:\Windows\System32" lange bevor man an 64-BitCPUs dachte als Ordner für Systemdateien festgelegt. Da Milliarden Programme dort diverse lebenswichtige Bibliotheken und Programme erwarten, wurde aus Kompatibilitätsgründen der Ordnername beibehalten. Mehr steckt nicht dahinter
- Als Name für die Verknüpfung kannst Du "Rumpelheinzchens Erbsensuppe.rülps" angeben. ...ist total Wurst. &" * : < > ? / \ | sind nicht erlaubt ~ ' # % !{ } sollte man vermeiden ( was ein normaler Nutzer nicht sieht, die endun für Veknüpfungen ist immer .lnk die Endung ist standardmäßig lediglich im Explorer ausgeblendet.
So, Danke für deine Hilfe nochmal. Die Sache läuft jetzt. Das Problem war, das mein Zugang zu dem Laufwerk gesperrt wurde in meiner Firma, da ich es mehrmals probiert hatte mich einzuloggen auch über ein anderes Skript und dann mein Passwort und Benutzername nicht erkannt wurde, da die falsche Anmelde-Domäne gewählt war... Die Administratoren haben nun meinen Zugang wieder freigegeben und jetzt müsste die Sache auch laufen. Hoffe ich zumindest mal.
Wenn nicht, melde ich mich nochma. Ich habe noch eine Frage zu einer anderen Autostart-Sache die nicht fkt. stell gleich noch eine Frage ein.
MFG
Einen schönen guten Morgen, liebe*r RedDevil1982,
[U:]\AUTO.ps1
Die Klammern vom Laufwerk ([ ]) entfernen. Da hast Du die Vorlage falsch verstanden. ;-)
Also:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command"& ' U:\AUTO.ps1' "
Mit freundlichen Grüßen
Die Datei ist vorhanden in shell:startup
Ich führe Sie aus, nichts passiert.
Kann mir bitte jemand weiterhelfen, woran das liegt?
Danke für deine Rückmeldung.
Ok ich habe den Pfad so eingegeben
Als name gebe ich LaufwerkeVerbinden ein.
Ich führe die Datei nun aus, nichts passiert
Muss die Datei .exe heißen?
Muss die Datei .exe heißen?
Da Du die PowerShell Anwendung nutzt, ja.
Hast Du überprüft, ob der Pfad stimmt?
Ich spreche von PowerShell.
Davon ab, die Verknüpfung müsste so ausreichen:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command 'U:\AUTO.ps1'
Alternativ geht's auch einfach über die Aufgabenverwaltung.
Die Datei ist da, ich klicke doppelt drauf, es öffnet sich ein schwarzes Fenster es blinkt kurz. Dann schließt sich das Fenster wieder
Nichts passiert. Die Laufwerke werden nicht freigeschalten
...müsste so ausreichen ...
Nö! da fehlt &
powershell.exe -Command 'U:\AUTO.ps1'
gibt die literale Stringkonstante U:\AUTO.ps1 in in den Standarrdoutputstream (Consolfenster) aus und beendet sich.
Erzwingen wir das Fenster offen zu lassen:
powershell.exe -NoExit -Command 'U:\AUTO.ps1'
& ist der Call-Operator um den im String angegebenen Pfad aufzurufen oder einen {Scriptblock} auszuführen. ...und weil von Verknüpfungen primär ausgeführte cmd.exe ziemlich sauer auf ein "nacktes"& reagiert behört das gesamte oneliner-Script in "DoubleQuotes" .
blinkt kurz. Dann schließt sich das Fenster wieder
Ist doch klar. Powershell startet, kann mit dem Parameter -Command"usw.. nix anfangen.
Der Parameter heist -Command "beliebiger code"
Ich probiere das morgen nochmal:
Fragen:
1. Auf meinem Rechner nutze ich ein 64 Bit Betriebssystem, in dem Befehlt steht was von Windows/System32 hat dies irgend einen Einfluss?
2. Nach ich die Commandozeile eingegeben habe:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "& 'U:\AUTO.ps1'"
muss ich noch einen Namen für die Verknüpfung vergeben, die in shell:autostart liegt.
Muss ich hier für den Namen xxx.exe wählen oder kann ich auch xyz ohne die Endung .exe vergeben?