Mit Powershell Name der Verknüpfung herausfinden
Hey.
Sorry für den Titel, mir ist nichts aussagekräftigeres eingefallen.
Ich weiß nicht ob mein Problem lösbar ist. Mal sehen, ob ihr Ideen habt:
Also ich erstelle ein Verknüpfung (wieheisseich.lnk). Die Verkn. hat das Ziel: Ich möchte jetzt in der test.ps1 wissen, wie der Dateiname der Verknüpfung ist.
Ich möchte also, dass das Skript test.ps1 sich anders verhält je nachdem ob es via wieheisseich.lnk oder anderername.lnk aufgerufen wird.
Eventuell gibt es eine Möglichkeit. Ich teste unter Win11 mit Windows-Terminal. Der Fenstername des Terminalfensters ändert sich auf den Namen der verwendeten Verknüpfung. Dreckig könnte ich also die offenen Fenster parsen, aber vielleicht geht es besser.
Ich freue mich auf euere Ideen.
Grüße,
Tex
Sorry für den Titel, mir ist nichts aussagekräftigeres eingefallen.
Ich weiß nicht ob mein Problem lösbar ist. Mal sehen, ob ihr Ideen habt:
Also ich erstelle ein Verknüpfung (wieheisseich.lnk). Die Verkn. hat das Ziel:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file test.ps1
Ich möchte also, dass das Skript test.ps1 sich anders verhält je nachdem ob es via wieheisseich.lnk oder anderername.lnk aufgerufen wird.
Eventuell gibt es eine Möglichkeit. Ich teste unter Win11 mit Windows-Terminal. Der Fenstername des Terminalfensters ändert sich auf den Namen der verwendeten Verknüpfung. Dreckig könnte ich also die offenen Fenster parsen, aber vielleicht geht es besser.
Ich freue mich auf euere Ideen.
Grüße,
Tex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 72641350336
Url: https://administrator.de/contentid/72641350336
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
8 Kommentare
Neuester Kommentar
Ist das vielleicht deine Lösung was du haben möchtest?
# In test.ps1
$Verknuepfungspfad = $_
$VerknuepfungsDateiname = [System.IO.Path]::GetFileNameWithoutExtension($Verknuepfungspfad)
if ($VerknuepfungsDateiname -eq "wieheisseich") {
# Verknüpfung heißt wieheisseich.lnk
# Führe den entsprechenden Code aus
} elseif ($VerknuepfungsDateiname -eq "anderername") {
# Verknüpfung heißt anderername.lnk
# Führe den entsprechenden Code aus
}
write-host ((gps -id $pid).MainWindowTitle -split ": ")[-1]
Hi,
Was du eigentlich willst ist mW nicht möglich.
Wie wäre es wenn du stattdessen in der Verknüpfung ein Argument an das PS-Script übergibst?
-Thomas
Was du eigentlich willst ist mW nicht möglich.
Wie wäre es wenn du stattdessen in der Verknüpfung ein Argument an das PS-Script übergibst?
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "C:\script.ps1" hallo
param (
[string]$arg
)
Write-Host "Verknüpfung: $arg"
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')
-Thomas
Moin,
Prinzipiell ist dein Vorhaben problemlos möglich, allerdings nicht per lnk. Du kannst dir dafür einfach einen eigenen Dateitypen definieren, nehmen wir als Beispiel mal ".tag". Erstelle folgende Registry-Schlüssel:
Fortan braucht man nur eine neue Datei mit der Endung ".tag" erstellen - und kann beliebig Dateien auf diese Datei drauf ziehen.
Das erste Argument ist die .tag-Datei, alle weiteren die jeweiligen Dateien, die per Drag&Drop auf diese gezogen wurden.
Gruß Thomas
Zitat von @tex15:
Argument funktioniert natürlich. Aber das, was ich möchte, soll genau das Argument ersetzten, um mein Skript für ONU's zugänglicher zu machen.
...
Ich erstelle also eine Verknüpfung zum Skript, benenne die in TODO.lnk, und kann dann da eine Datei drauf Drag&Dropen und die wird getagged.
das ist doch viel zu kompliziert 🤪.Argument funktioniert natürlich. Aber das, was ich möchte, soll genau das Argument ersetzten, um mein Skript für ONU's zugänglicher zu machen.
...
Ich erstelle also eine Verknüpfung zum Skript, benenne die in TODO.lnk, und kann dann da eine Datei drauf Drag&Dropen und die wird getagged.
Prinzipiell ist dein Vorhaben problemlos möglich, allerdings nicht per lnk. Du kannst dir dafür einfach einen eigenen Dateitypen definieren, nehmen wir als Beispiel mal ".tag". Erstelle folgende Registry-Schlüssel:
Schlüssel | Wert |
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tag | open |
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tag\shell\open\command | C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nologo -file "<Scriptpfad>" "%1" %* |
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tag\shellex\DropHandler | {60254CA5-953B-11CF-8C96-00AA00B8708C} |
Fortan braucht man nur eine neue Datei mit der Endung ".tag" erstellen - und kann beliebig Dateien auf diese Datei drauf ziehen.
Das erste Argument ist die .tag-Datei, alle weiteren die jeweiligen Dateien, die per Drag&Drop auf diese gezogen wurden.
Gruß Thomas