我正在尝试创建一个脚本,为给定目录中的每个 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 [script path],例如:
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
它抛出错误“值不在预期范围内。”
有任何想法吗?
要将参数传递给目标,请执行以下操作: