Ich möchte mit PowerShell eine Verknüpfung für diese ausführbare Datei erstellen:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Wie kann das gemacht werden?
Ich möchte mit PowerShell eine Verknüpfung für diese ausführbare Datei erstellen:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Wie kann das gemacht werden?
Antworten:
Ich kenne kein natives Cmdlet in Powershell, aber Sie können stattdessen ein com-Objekt verwenden:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
$Shortcut.Save()
Sie können ein Powershell-Skript erstellen, das als set-shortcut.ps1 in Ihrem $ pwd gespeichert ist
param ( [string]$SourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()
und nenne es so
Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"
Wenn Sie Argumente an die Ziel-Exe übergeben möchten, können Sie Folgendes tun:
#Set the additional parameters for the shortcut
$Shortcut.Arguments = "/argument=value"
vor $ Shortcut.Save ().
Der Einfachheit halber finden Sie hier eine modifizierte Version von set-shortcut.ps1. Es akzeptiert Argumente als zweiten Parameter.
param ( [string]$SourceExe, [string]$ArgumentsToSourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Arguments = $ArgumentsToSourceExe
$Shortcut.Save()
Set-ShortCut
Cmdlet eher so MKLINK
, oder Set-Alias
wo der Alias oder Link als erstes Argument und dann als Ziel kommt. param ( [string]$LinkPath, [string]$TargetPath )
cmd /c mklink
ist ein sehr begrenzter Zeichensatz für die Benennung der .lnk-Datei. Ein Name mit einem → schlägt beispielsweise fehl. Eine Möglichkeit, dies zu umgehen , besteht darin, beim Erstellen der .lnk-Datei [Web.HttpUtility]::UrlEncode()
(nach Add-Type -AN System.Web
) dem Dateinamen (nach ) dem Dateinamen zu suchen und ihn dann mit Rename-Item in den Namen UrlDecoded umzubenennen.
SpecialFolders
Methode eines WScript-Objekts nützlich sein: $WshShell.SpecialFolders("Desktop")
Sie erhalten den wahren Pfad zu den Desktop-Ordner, den Sie später beim Aufrufen verwenden können CreateShortcut
.
PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")
. Es wurde eine Verknüpfung erstellt, die im Windows Explorer angezeigt werden kann, aber als ich cd home
die PS selbst eintippte, wurde eine Fehlermeldung cd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
Beginnend Powershell 5.0 New-Item
, Remove-Item
und Get-ChildItem
wurde erweitert , Erstellung und Verwaltung von symbolischen Links zu unterstützen. Der Parameter ItemType für New-Item
akzeptiert einen neuen Wert, SymbolicLink. Jetzt können Sie symbolische Links in einer einzelnen Zeile erstellen, indem Sie das Cmdlet New-Item ausführen.
New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"
Seien Sie vorsichtig, ein SymbolicLink unterscheidet sich von einer Verknüpfung . Verknüpfungen sind nur eine Datei. Sie haben eine Größe (eine kleine, die nur darauf verweist, wohin sie zeigen) und sie benötigen eine Anwendung, die diesen Dateityp unterstützt, um verwendet zu werden. Ein symbolischer Link ist auf Dateisystemebene und wird von allen als Originaldatei angesehen. Eine Anwendung benötigt keine besondere Unterstützung, um einen symbolischen Link zu verwenden.
Wenn Sie mit Powershell eine Verknüpfung zum Ausführen als Administrator erstellen möchten, können Sie diese verwenden
$file="c:\temp\calc.lnk"
$bytes = [System.IO.File]::ReadAllBytes($file)
$bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON (Use –bor to set RunAsAdministrator option and –bxor to unset)
[System.IO.File]::WriteAllBytes($file, $bytes)
Wenn jemand etwas anderes in einer .LNK-Datei ändern möchte, können Sie sich auf die offizielle Microsoft-Dokumentation beziehen .
New-Item
in erstellter Symlink "${env:AppData}\Microsoft\Windows\SendTo"
wird beispielsweise nicht im Explorer-Menü "Senden an" angezeigt und ermöglicht nicht das Anpassen von Verknüpfungseigenschaften wie Symbol oder Arbeitsverzeichnis.
New-Item -ItemType SymbolicLink -RunAsAdmin ...
.
& C:\temp\calc.lnk
) starten . Was erwartest du ?