Tôi muốn tạo lối tắt bằng PowerShell cho tệp thực thi này:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Điều này có thể giải quyết như thế nào?
Tôi muốn tạo lối tắt bằng PowerShell cho tệp thực thi này:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Điều này có thể giải quyết như thế nào?
Câu trả lời:
Tôi không biết bất kỳ lệnh ghép ngắn gốc nào trong powershell nhưng bạn có thể sử dụng đối tượng com để thay thế:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
$Shortcut.Save()
bạn có thể tạo một tệp lệnh powershell lưu dưới dạng set-shortcut.ps1 trong $ pwd của mình
param ( [string]$SourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()
và gọi nó như thế này
Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"
Nếu bạn muốn chuyển đối số đến exe đích, nó có thể được thực hiện bằng cách:
#Set the additional parameters for the shortcut
$Shortcut.Arguments = "/argument=value"
trước $ Shortcut.Save ().
Để thuận tiện, đây là phiên bản sửa đổi của set-shortcut.ps1. Nó chấp nhận các đối số làm tham số thứ hai của nó.
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
lệnh ghép ngắn giống hơn MKLINK
, hoặc Set-Alias
nơi bí danh hoặc liên kết xuất hiện như đối số đầu tiên và sau đó là đích. param ( [string]$LinkPath, [string]$TargetPath )
cmd /c mklink
cách giải quyết là bộ ký tự rất hạn chế để đặt tên cho tệp .lnk. Ví dụ, tên có chứa → sẽ bị lỗi. Một cách giải quyết vấn đề này, nếu bạn cần hỗ trợ ký tự tốt hơn, là [Web.HttpUtility]::UrlEncode()
(sau Add-Type -AN System.Web
) tên tệp trong khi tạo tệp .lnk, sau đó đổi tên nó thành tên UrlDecoded bằng cách sử dụng Rename-Item.
SpecialFolders
phương thức của một đối tượng WScript có thể hữu ích: $WshShell.SpecialFolders("Desktop")
sẽ mang lại cho bạn đường dẫn thực sự đến thư mục màn hình nền mà bạn có thể sử dụng sau đó khi gọi CreateShortcut
.
PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")
. Nó đã tạo ra một lối tắt có thể được nhìn thấy từ trình khám phá cửa sổ, nhưng khi tôi nhập cd home
vào chính PS, tôi gặp lỗicd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
Bắt đầu PowerShell 5.0 New-Item
, Remove-Item
và Get-ChildItem
đã được cải tiến để hỗ trợ tạo và quản lý các liên kết tượng trưng. Các itemtype tham số cho New-Item
chấp nhận một giá trị mới, SymbolicLink. Bây giờ bạn có thể tạo các liên kết tượng trưng trong một dòng bằng cách chạy lệnh ghép ngắn New-Item.
New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"
Hãy cẩn thận một SymbolicLink khác với một Shortcut , các phím tắt chỉ là một tập tin. Chúng có kích thước (Một kích thước nhỏ, chỉ tham chiếu đến nơi chúng trỏ đến) và chúng yêu cầu một ứng dụng hỗ trợ loại tệp đó để được sử dụng. Một liên kết tượng trưng là cấp hệ thống tệp và mọi thứ đều coi nó là tệp gốc. Một ứng dụng không cần hỗ trợ đặc biệt để sử dụng một liên kết tượng trưng.
Dù sao nếu bạn muốn tạo lối tắt Run As Administrator bằng Powershell, bạn có thể sử dụng
$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)
Nếu ai đó muốn thay đổi nội dung khác trong tệp .LNK, bạn có thể tham khảo tài liệu chính thức của Microsoft .
New-Item
trong "${env:AppData}\Microsoft\Windows\SendTo"
sẽ không hiển thị trong menu Gửi Đến của Explorer và không cho phép tùy chỉnh các thuộc tính Lối tắt như biểu tượng hoặc thư mục làm việc.
New-Item -ItemType SymbolicLink -RunAsAdmin ...
.
& C:\temp\calc.lnk
). Bạn mong chờ điều gì ?