Como criar um atalho na área de trabalho com o PowerShell

3

Tenho me referido à resposta número três de esta postagem para escrever meu script do PowerShell, mas parece que não está funcionando.

$linkPath        = Join-Path ([Environment]::GetFolderPath("Desktop")) "My shortcut.lnk"
$targetPath      = Join-Path ([Environment]::GetFolderPath("MyDocuments")) "...\run.exe"
$link            = (New-Object -ComObject WScript.Shell).CreateShortcut($linkPath)
$link.TargetPath = $targetPath

Ele imprime somente o código no painel de saída, mas nunca parece executar totalmente; nenhum atalho aparece na área de trabalho.

    
por Rob 01.01.2012 / 15:52

2 respostas

5

Você precisa chamar o método Save do objeto de atalho para armazenar o atalho como um arquivo.

$linkPath        = Join-Path ([Environment]::GetFolderPath("Desktop")) "My shortcut.lnk"
$targetPath      = Join-Path ([Environment]::GetFolderPath("MyDocuments")) "...\run.exe"
$link            = (New-Object -ComObject WScript.Shell).CreateShortcut($linkPath)
$link.TargetPath = $targetPath

$link.Save()

Veja também:

por 01.01.2012 / 16:09
1

Se você quiser automatizá-lo e criar atalhos sempre que quiser, aqui está um script que pode ajudar você a fazer isso.

O script funcionará como um aplicativo esperando que você digite o nome do usuário e o nome do computador remotamente. Nas linhas abaixo do #exemplo, você precisará substituir tudo dentro do [] de acordo com suas necessidades, você também (e eu recomendo que) duplique #example linhas para criar vários atalhos de uma só vez.

$ErrorActionPreference = "SilentlyContinue"

  function shortcut
{
    param
  ( 
    $DestinationPath,   
    $source,
    $icon
  )

  # CODE

  $WshShell = New-Object -ComObject WScript.shell
  $shortcut = $WshShell.CreateShortcut($DestinationPath)
  $shortcut.TargetPath = $Source
  $shortcut.iconlocation = $Icon
  $Shortcut.Save() 
}

$DestinationPath = read-host "Host"
$User = read-host "User"

#Example

shortcut "\$DestinationPath\c$\users\$user\desktop\[your shortcut.lnk]" "[source for your shortcut]" "[icon path if needed]"    

if(Test-Path "\$DestinationPath\c$\users\$user\desktop\[your shortcut.lnk]")
{Write-host "'nShortcut created: [your shortcut]'nHost:$DestinationPath'nUser:$user'n" -ForegroundColor Green}

else{write-host "Shortcut couldn't be created in $DestinationPath"}
    
por 31.10.2017 / 20:05