PowerShell을 사용하여 바로 가기를 만드는 방법


90

이 실행 파일에 대해 PowerShell을 사용하여 바로 가기를 만들고 싶습니다.

C:\Program Files (x86)\ColorPix\ColorPix.exe

어떻게 할 수 있습니까?


2
관리자 권한으로 바로 가기를 실행하려면 이 답변을 사용할 수 있습니다 .
JPBlanc 2015 년

@JPBlanc의 대답을 받아들이는 것을 진지하게 고려해야합니다. 그것은 하나의 라이너입니다
계산법 캐년

@KolobCanyon 조심하세요, 내 대답은 바로 가기가 아닌 심볼릭 링크입니다.
JPBlanc

답변:


139

powershell의 기본 cmdlet을 모르지만 대신 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()

$ pwd에 set-shortcut.ps1로 저장하는 powershell 스크립트를 만들 수 있습니다.

param ( [string]$SourceExe, [string]$DestinationPath )

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()

이렇게 부르세요

Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"

대상 exe에 인수를 전달하려면 다음을 수행하십시오.

#Set the additional parameters for the shortcut  
$Shortcut.Arguments = "/argument=value"  

$ Shortcut.Save () 전에 .

편의를 위해 set-shortcut.ps1의 수정 된 버전이 있습니다. 두 번째 매개 변수로 인수를받습니다.

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()

1
매우 사소하지만 일관성을 위해 Set-ShortCutcmdlet 구문을 보다 비슷하게 사용 MKLINK하거나 Set-Alias별칭 또는 링크가 첫 번째 인수와 대상이되는 위치를 사용합니다. param ( [string]$LinkPath, [string]$TargetPath )
orad

WshShell COM 구성 요소 또는 cmd /c mklink해결 방법 의 한 가지 제한 사항은 .lnk 파일 이름 지정을위한 매우 제한된 문자 집합입니다. 예를 들어 →가 포함 된 이름은 실패합니다. 이 문제를 해결하는 한 가지 방법은 더 나은 문자 지원이 필요한 경우 .lnk 파일을 만드는 동안 파일 이름 을 [Web.HttpUtility]::UrlEncode()(뒤에 Add-Type -AN System.Web) Rename-Item을 사용하여 UrlDecoded 이름으로 바꾸는 것입니다.
brianary

실제 데스크톱 에서 바로 가기를 만들 때 (내가 여러 번 관찰 한 과실 인 하드 코딩 된 경로를 가정하는 것과는 대조적으로) SpecialFoldersWScript 개체 의 방법이 유용 $WshShell.SpecialFolders("Desktop")할 수 있습니다. 나중에를 호출 할 때 사용할 수있는 데스크톱 폴더 CreateShortcut입니다.
amn

이 방법을 PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk"). 그것은 Windows 탐색기에서 볼 수있는 바로 가기를 만들었지 만 입력 한 경우 cd home의 PS 자체에서 나는 오류 얻을cd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
벤 잉어

44

PowerShell을 5.0부터 New-Item, Remove-Item그리고 Get-ChildItem생성 및 기호 링크 관리를 지원하도록 향상되었습니다. 의 ItemType 매개 변수 New-Item는 새 값인 SymbolicLink 를 승인합니다. 이제 New-Item cmdlet을 실행하여 한 줄에 심볼릭 링크를 만들 수 있습니다.

New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"

주의 하시고 SymbolicLink가 A로부터 다른 바로 가기 단축키는 파일입니다. 그것들은 크기 (가리키는 위치를 참조하는 작은 크기)를 가지고 있으며 사용하려면 해당 파일 유형을 지원하는 응용 프로그램이 필요합니다. 심볼릭 링크는 파일 시스템 수준이며 모든 것이 원본 파일로 간주합니다. 응용 프로그램은 심볼릭 링크를 사용하기 위해 특별한 지원이 필요하지 않습니다.

어쨌든 Powershell을 사용하여 관리자 권한 으로 실행 바로 가기 를 만들려면 다음을 사용할 수 있습니다.

$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)

.LNK 파일의 다른 내용을 변경하려면 공식 Microsoft 문서를 참조하십시오 .


4
바로 가기 아이콘도 설정할 수 있나요?
orad

7
하지만 심볼릭 링크는 바로 가기와는 매우 다릅니다. New-Itemin "${env:AppData}\Microsoft\Windows\SendTo"을 사용하여 만든 심볼릭 링크 는 예를 들어 탐색기 보내기 메뉴에 표시되지 않으며 아이콘이나 작업 디렉터리와 같은 바로 가기 속성을 사용자 정의 할 수 없습니다.
brianary

내가 올바르게 이해한다면 심볼릭 링크를 설정하면 바로 가기를 모든 셸 및 모든 디렉토리에서 사용할 수 있습니다. 시스템 변수를 설정하는 것과 다소 비슷합니다. 이 올바른지? 디렉토리에도 사용할 수 있습니까?
Ben Carp

1
PowerShell Dev가 다음과 같은 새 매개 변수에 3 줄을 구현하는 대신 위와 같이 왜곡되고 이해할 수없는 코드를 작성하게하는 것은 놀라운 일 New-Item -ItemType SymbolicLink -RunAsAdmin ...입니다.
not2qubit

1
@Luke, 물론 탐색기 링크이므로 두 번 클릭하면 calc.exe가 시작됩니다. 따라서 PowerShell ( & C:\temp\calc.lnk) 을 시작할 때 수행됩니다 . 당신은 무엇을 기대합니까?
JPBlanc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.