通过 Powershell 提供包含程序和文件的快捷方式的目标路径

通过 Powershell 提供包含程序和文件的快捷方式的目标路径

我正在尝试创建一个脚本,为给定目录中的每个 Powershell 脚本创建一个具有管理员权限的快捷方式,目前我所做的是:

$scripts = Get-ChildItem -path "C:\Users\djcim\Google Drive\Powershell Scripts\*.ps1" -Recurse
foreach ($script in $scripts) {
    $shortcutFile = [io.path]::ChangeExtension($script.FullName, '.lnk')
    $WScriptShell = New-Object -ComObject WScript.Shell
    $Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
    $Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
    $Shortcut.Save()

    $bytes = [System.IO.File]::ReadAllBytes($ShortcutFile)
    $bytes[0x15] = $bytes[0x15] -bor 0x20
    [System.IO.File]::WriteAllBytes($ShortcutFile, $bytes)

    Move-Item -Path $shortcutFile -Destination "C:\Users\djcim\Google Drive\Powershell Scripts\Admin Shortcuts" -force
}

上述操作成功为每个脚本创建了具有管理员权限的快捷方式,但目标仅仅是 Powershell,而不是脚本本身。

我确实需要快捷目标是 Powershell -f [脚本路径],例如:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -f "C:\Users\GJBalaich\Google Drive\Powershell Scripts\FFmpeg\FFclip.ps1"

但是,当我尝试通过 Powershell 将其设置为目标路径时,示例:

$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -f " + "`"" + $script + "`""
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -f " + $script

它会引发错误“值不在预期范围内。”

有任何想法吗?

答案1

要将参数传递给目标,请执行以下操作:

'Set the additional parameters for the shortcut  
$Shortcut.Arguments = "C:\Users\GJBalaich\Google Drive\Powershell Scripts\FFmpeg\FFclip.ps1"  

相关内容