Estou tentando criar um script que crie um atalho com privilégios de administrador para cada script do Powershell em um determinado diretório, o que tenho até agora:
$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
}
O acima cria com sucesso um atalho com privilégios de administrador por script, no entanto, o destino é apenas para o Powershell e não para os próprios scripts.
Eu realmente preciso que o alvo do atalho seja Powershell -f [caminho do script], exemplo:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -f "C:\Users\GJBalaich\Google Drive\Powershell Scripts\FFmpeg\FFclip.ps1"
No entanto, quando tento definir isso como o caminho de destino via Powershell, exemplos:
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -f " + "`"" + $script + "`""
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -f " + $script
ele lança o erro "Valor não está dentro do intervalo esperado."
Alguma ideia?
Para passar argumentos para o alvo, faça o seguinte: