Chcę utworzyć skrót za pomocą PowerShell dla tego pliku wykonywalnego:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Jak to zrobić?
Chcę utworzyć skrót za pomocą PowerShell dla tego pliku wykonywalnego:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Jak to zrobić?
Odpowiedzi:
Nie znam żadnego natywnego polecenia cmdlet w PowerShell, ale zamiast tego możesz użyć obiektu com:
$WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk") $Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe" $Shortcut.Save()
możesz utworzyć skrypt PowerShell, zapisując go jako set-shortcut.ps1 w swoim $ pwd
param ( [string]$SourceExe, [string]$DestinationPath ) $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut($DestinationPath) $Shortcut.TargetPath = $SourceExe $Shortcut.Save()
i nazwij to tak
Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"
Jeśli chcesz przekazać argumenty do docelowego exe, możesz to zrobić:
#Set the additional parameters for the shortcut $Shortcut.Arguments = "/argument=value"
przed $ Shortcut.Save ().
Dla wygody przedstawiamy zmodyfikowaną wersję pliku set-shortcut.ps1. Przyjmuje argumenty jako drugi parametr.
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()
źródło
Set-ShortCut
cmdlet była bardziej podobnaMKLINK
lubSet-Alias
gdzie alias lub link występuje jako pierwszy argument, a następnie cel.param ( [string]$LinkPath, [string]$TargetPath )
cmd /c mklink
obejść jest bardzo ograniczony zestaw znaków do nazwania pliku .lnk. Na przykład nazwa zawierająca → nie powiedzie się. Jednym ze sposobów obejścia tego problemu , jeśli potrzebujesz lepszej obsługi znaków, jest[Web.HttpUtility]::UrlEncode()
(poAdd-Type -AN System.Web
) nazwie pliku podczas tworzenia pliku .lnk, a następnie zmiana nazwy na nazwę UrlDecoded za pomocą opcji Rename-Item.SpecialFolders
metoda obiektu WScript może się przydać:$WshShell.SpecialFolders("Desktop")
da ci prawdziwą ścieżkę do folder na pulpicie, z którego możesz później korzystać podczas dzwonieniaCreateShortcut
.PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")
. Stworzył skrót, który można zobaczyć z eksploratora Windows, ale kiedy wpisujęcd home
sam PS , pojawia się błądcd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
Począwszy PowerShell 5.0
New-Item
,Remove-Item
iGet-ChildItem
zostały wzmocnione w celu wspierania tworzenia i zarządzania dowiązania symboliczne. ItemType parametrNew-Item
przyjmuje nową wartość, SymbolicLink. Teraz można tworzyć łącza symboliczne w jednym wierszu, uruchamiając polecenie cmdlet New-Item.New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"
Zachowaj ostrożność, a SymbolicLink różni się od skrótu , skróty to tylko plik. Mają rozmiar (mały, który odwołuje się tylko do miejsca, w którym wskazują) i wymagają aplikacji obsługującej ten typ pliku, aby mogły być używane. Dowiązanie symboliczne jest na poziomie systemu plików i wszystko widzi je jako oryginalny plik. Aplikacja nie wymaga specjalnego wsparcia, aby używać dowiązania symbolicznego.
W każdym razie, jeśli chcesz utworzyć skrót Uruchom jako administrator za pomocą Powershell, możesz użyć
$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)
Jeśli ktoś chce zmienić coś innego w pliku .LNK, może skorzystać z oficjalnej dokumentacji Microsoft .
źródło
New-Item
w"${env:AppData}\Microsoft\Windows\SendTo"
nie będzie wyświetlane w menu Eksploratora Wyślij do, np. I nie pozwala na dostosowywanie właściwości skrótu, takich jak ikona lub katalog roboczy.New-Item -ItemType SymbolicLink -RunAsAdmin ...
.& C:\temp\calc.lnk
). Czego oczekujesz ?