Voglio creare un collegamento con PowerShell per questo eseguibile:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Come si può fare?
Voglio creare un collegamento con PowerShell per questo eseguibile:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Come si può fare?
Risposte:
Non conosco alcun cmdlet nativo in PowerShell, ma puoi invece utilizzare l'oggetto 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()
puoi creare uno script PowerShell salvandolo come set-shortcut.ps1 nel tuo $ pwd
param ( [string]$SourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()
e chiamalo così
Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"
Se vuoi passare argomenti all'exe di destinazione, puoi farlo:
#Set the additional parameters for the shortcut
$Shortcut.Arguments = "/argument=value"
prima di $ Shortcut.Save ().
Per comodità, ecco una versione modificata di set-shortcut.ps1. Accetta argomenti come secondo parametro.
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 fosse più simile MKLINK
, o Set-Alias
dove l'alias o il collegamento viene come primo argomento e poi come destinazione. param ( [string]$LinkPath, [string]$TargetPath )
cmd /c mklink
soluzioni alternative è un set di caratteri molto limitato per la denominazione del file .lnk. Ad esempio, un nome contenente un → fallirà. Un modo per aggirare questo, se hai bisogno di un migliore supporto per i caratteri, è quello di [Web.HttpUtility]::UrlEncode()
(dopo Add-Type -AN System.Web
) il nome del file durante la creazione del file .lnk, quindi rinominarlo con il nome UrlDecoded usando Rename-Item.
SpecialFolders
metodo di un oggetto WScript può tornare utile: $WshShell.SpecialFolders("Desktop")
ti darà il vero percorso per la cartella del desktop, che puoi utilizzare successivamente durante la chiamata CreateShortcut
.
PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")
. Ha creato una scorciatoia che può essere vista da Windows Explorer, ma quando ho digitato cd home
il PS stesso ricevo un errorecd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
A partire da PowerShell 5.0 New-Item
, Remove-Item
e Get-ChildItem
sono stati migliorati per supportare la creazione e la gestione di collegamenti simbolici. Il parametro ItemType per New-Item
accetta un nuovo valore, SymbolicLink. È ora possibile creare collegamenti simbolici in una singola riga eseguendo il cmdlet New-Item.
New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"
Attenzione una SymbolicLink è diverso da un collegamento , i collegamenti sono solo un file. Hanno una dimensione (una piccola, che fa riferimento solo a dove puntano) e richiedono un'applicazione che supporti quel tipo di file per essere utilizzati. Un collegamento simbolico è a livello di filesystem e tutto lo vede come il file originale. Un'applicazione non necessita di alcun supporto speciale per utilizzare un collegamento simbolico.
Ad ogni modo, se vuoi creare un collegamento Esegui come amministratore usando Powershell puoi usare
$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)
Se qualcuno vuole cambiare qualcos'altro in un file .LNK puoi fare riferimento alla documentazione ufficiale di Microsoft .
New-Item
in "${env:AppData}\Microsoft\Windows\SendTo"
non verrà visualizzato nel menu Invia a di Explorer, ad esempio, e non consente la personalizzazione delle proprietà dei collegamenti come l'icona o la directory di lavoro.
New-Item -ItemType SymbolicLink -RunAsAdmin ...
.
& C:\temp\calc.lnk
). Cosa ti aspetti ?