Quiero crear un acceso directo con PowerShell para este ejecutable:
C:\Program Files (x86)\ColorPix\ColorPix.exe
¿Cómo se puede hacer esto?
Quiero crear un acceso directo con PowerShell para este ejecutable:
C:\Program Files (x86)\ColorPix\ColorPix.exe
¿Cómo se puede hacer esto?
Respuestas:
No conozco ningún cmdlet nativo en powershell, pero puede usar el objeto com en su lugar:
$WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk") $Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe" $Shortcut.Save()
puede crear un script de PowerShell guardar como set-shortcut.ps1 en su $ pwd
param ( [string]$SourceExe, [string]$DestinationPath ) $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut($DestinationPath) $Shortcut.TargetPath = $SourceExe $Shortcut.Save()
y llámalo así
Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"
Si desea pasar argumentos al exe de destino, puede hacerlo de la siguiente manera:
#Set the additional parameters for the shortcut $Shortcut.Arguments = "/argument=value"
antes de $ Shortcut.Save ().
Para mayor comodidad, aquí hay una versión modificada de set-shortcut.ps1. Acepta argumentos como segundo parámetro.
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()
fuente
Set-ShortCut
cmdlet para ser más parecidaMKLINK
, oSet-Alias
donde el alias o el enlace aparece como primer argumento y luego como destino.param ( [string]$LinkPath, [string]$TargetPath )
cmd /c mklink
soluciones alternativas es un conjunto de caracteres muy limitado para nombrar el archivo .lnk. Un nombre que contenga un → fallará, por ejemplo. Una forma de evitar esto, si necesita un mejor soporte de caracteres, es[Web.HttpUtility]::UrlEncode()
(despuésAdd-Type -AN System.Web
) del nombre del archivo mientras crea el archivo .lnk, luego renombrarlo al nombre UrlDecoded usando Rename-Item.SpecialFolders
método de un objeto WScript puede ser útil:$WshShell.SpecialFolders("Desktop")
le proporcionará la ruta verdadera hacia la carpeta del escritorio, que puede utilizar posteriormente al llamarCreateShortcut
.PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")
. Creó un acceso directo que se puede ver desde el explorador de Windows, pero cuando escribícd home
el PS mismo, aparece un errorcd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
A partir de PowerShell 5.0
New-Item
,Remove-Item
yGet-ChildItem
se han mejorado para admitir la creación y administración de enlaces simbólicos. El parámetro ItemType paraNew-Item
acepta un nuevo valor, SymbolicLink. Ahora puede crear vínculos simbólicos en una sola línea ejecutando el cmdlet New-Item.New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"
Tenga cuidado: un SymbolicLink es diferente de un acceso directo , los accesos directos son solo un archivo. Tienen un tamaño (uno pequeño, que solo hace referencia a dónde apuntan) y requieren una aplicación que admita ese tipo de archivo para poder usarse. Un enlace simbólico es el nivel del sistema de archivos y todo lo ve como el archivo original. Una aplicación no necesita soporte especial para usar un enlace simbólico.
De todos modos, si desea crear un acceso directo Ejecutar como administrador usando Powershell, puede usar
$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)
Si alguien quiere cambiar algo más en un archivo .LNK, puede consultar la documentación oficial de Microsoft .
fuente
New-Item
in"${env:AppData}\Microsoft\Windows\SendTo"
no se mostrará en el menú Enviar a de Explorer, por ejemplo, y no permite personalizar las propiedades del acceso directo como el icono o el directorio de trabajo.New-Item -ItemType SymbolicLink -RunAsAdmin ...
.& C:\temp\calc.lnk
). Qué esperas ?