shell:startup programm startet nicht?

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.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

RedDevil1982 
Beitragsersteller
 28.08.2024, 22:50

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?

Erzesel  28.08.2024, 23:16
@RedDevil1982
  1. 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
  2. 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.
RedDevil1982 
Beitragsersteller
 28.08.2024, 23:20
@Erzesel

Gut, ich werde es probieren morgen, dann sieht man weiter.

MFG

RedDevil1982 
Beitragsersteller
 29.08.2024, 19:29
@RedDevil1982

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

Dultus

Woher ich das weiß:Berufserfahrung – 💻 Unternehmensberater (Cloud & Softwareentwicklung)

RedDevil1982 
Beitragsersteller
 28.08.2024, 10:42

Die Datei ist vorhanden in shell:startup
Ich führe Sie aus, nichts passiert.

Kann mir bitte jemand weiterhelfen, woran das liegt?

RedDevil1982 
Beitragsersteller
 28.08.2024, 10:38

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?

Dultus, UserMod Light   28.08.2024, 10:56
@RedDevil1982

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.

RedDevil1982 
Beitragsersteller
 28.08.2024, 10:59
@Dultus, UserMod Light

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

Erzesel  28.08.2024, 22:40
@Dultus, UserMod Light
...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" .

Erzesel  28.08.2024, 22:47
@RedDevil1982
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"