首页 > 解决方案 > 使用 Powershell 创建快捷方式以使用 Powershell 运行

问题描述

我有点失落。我想要一个 powershell 脚本,它创建一个链接到另一个 powershell 脚本的快捷方式。该快捷方式应该能够以管理员身份运行,并且目标应该如下所示。我是这样手动制作的,它可以工作。

目标:C:\system32\windowspowershell\v1.0\powershell.exe -executionpolicy bypass -noexit "TARGETPATH\test.ps1"

这是我的代码,但参数出现在目标路径的后面而不是前面。

是否还有可能将默认徽标替换为特定徽标?即powershell之一

有什么建议么?

谢谢!

#Read current path
function Get-ScriptDirectory {
    $Invocation = (Get-Variable MyInvocation -Scope 1).Value
    Split-Path $Invocation.MyCommand.Path
}
$installpath = Get-ScriptDirectory

#create shortcut
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$installpath\EXE.lnk")
$Shortcut.TargetPath = """$installpath\test.ps1"""
$Shortcut.Arguments = "argumentA ArgumentB"
$Shortcut.WorkingDirectory = "$installpath"
$Shortcut.Save()

标签: windowspowershellshortcut

解决方案


包括图标和运行方式

## Q:\Test\2018\04\27\SO_50057555.ps1
#Read current path
function Get-ScriptDirectory {
    $Invocation = (Get-Variable MyInvocation -Scope 1).Value
    Split-Path $Invocation.MyCommand.Path
}
$installpath = Get-ScriptDirectory
$RunScript= "Test.ps1"
$ShCutLnk = "PwSh $RunScript.lnk"

#create shortcut
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$installpath\$ShCutLnk")
$Shortcut.TargetPath = "C:\Windows\System32\windowspowershell\v1.0\powershell.exe"
$Shortcut.IconLocation = "C:\Windows\System32\windowspowershell\v1.0\powershell.exe,0" # icon index 0
$Shortcut.Arguments = "-Nop -Executionpolicy bypass -NoExit ""$installPath\$RunScript"""
$Shortcut.WorkingDirectory = "$installpath"
$Shortcut.Save()

## Make the Shortcut runas Administrator
## Source: https://stackoverflow.com/questions/28997799/how-to-create-a-run-as-administrator-shortcut-using-powershell
$bytes = [System.IO.File]::ReadAllBytes("$installpath\$ShCutLnk")
$bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON
[System.IO.File]::WriteAllBytes("$installpath\$ShCutLnk", $bytes)

在此处输入图像描述


推荐阅读