Quero criar um atalho com o PowerShell para este executável:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Como isso pode ser feito?
Quero criar um atalho com o PowerShell para este executável:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Como isso pode ser feito?
Respostas:
Não conheço nenhum cmdlet nativo no PowerShell, mas você pode usar o objeto com em vez disso:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
$Shortcut.Save()
você pode criar um script do PowerShell salvo como set-shortcut.ps1 em seu $ pwd
param ( [string]$SourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()
e chamá-lo assim
Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"
Se você quiser passar argumentos para o exe de destino, isso pode ser feito:
#Set the additional parameters for the shortcut
$Shortcut.Arguments = "/argument=value"
antes de $ Shortcut.Save ().
Por conveniência, aqui está uma versão modificada de set-shortcut.ps1. Ele aceita argumentos como seu 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()
Set-ShortCut
cmdlet para ser mais semelhante MKLINK
, ou Set-Alias
onde o alias ou link vem como primeiro argumento e depois como destino. param ( [string]$LinkPath, [string]$TargetPath )
cmd /c mklink
soluções alternativas é um conjunto de caracteres muito limitado para nomear o arquivo .lnk. Um nome contendo → falhará, por exemplo. Uma maneira de contornar isso, se você precisar de melhor suporte a caracteres, é [Web.HttpUtility]::UrlEncode()
(após Add-Type -AN System.Web
) o nome do arquivo ao criar o arquivo .lnk e, em seguida, renomeá-lo para o nome UrlDecoded usando Rename-Item.
SpecialFolders
método de um objeto WScript pode ser útil: $WshShell.SpecialFolders("Desktop")
fornecerá a você o caminho verdadeiro para a pasta da área de trabalho, que você pode usar posteriormente ao chamar CreateShortcut
.
PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")
. Ele criou um atalho que pode ser visto no Windows Explorer, mas quando eu digitei cd home
o próprio PS recebo um errocd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
Começando PowerShell 5.0 New-Item
, Remove-Item
e Get-ChildItem
foram aprimorados para apoiar a criação e gestão de links simbólicos. O ItemType parâmetro para New-Item
aceita um novo valor, SymbolicLink. Agora você pode criar links simbólicos em uma única linha executando o cmdlet New-Item.
New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"
Tenha cuidado a link simbólico é diferente de um atalho , os atalhos são apenas um arquivo. Eles têm um tamanho (Um pequeno, que apenas faz referência para onde apontam) e requerem um aplicativo para suportar esse tipo de arquivo para serem usados. Um link simbólico é o nível do sistema de arquivos e tudo o vê como o arquivo original. Um aplicativo não precisa de suporte especial para usar um link simbólico.
De qualquer forma, se você deseja criar um atalho Run As Administrator usando o Powershell, você pode 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)
Se alguém quiser alterar algo em um arquivo .LNK, consulte a documentação oficial da Microsoft .
New-Item
em "${env:AppData}\Microsoft\Windows\SendTo"
não será exibido no menu Enviar para do Explorer, por exemplo, e não permite a personalização de propriedades de atalho, como ícone ou diretório de trabalho.
New-Item -ItemType SymbolicLink -RunAsAdmin ...
.
& C:\temp\calc.lnk
). O que você espera?