Powershell-命令下载具有管理员权限的文件

Powershell-Command to download a file with admin rights

我尝试通过 powershell 命令下载文件。我使用的命令很简单:

Start-BitsTransfer  -Source  'https://download.com/file.zip' -Destination 'E:\test\file.zip'

我可以 运行 PS 中的命令成功。但现在我想 运行 提升权限。 So I gooogled and found this solution:

那里说命令应该是:

Start-Process powershell.exe -Verb Runas -ArgumentList "-Command & {get-process}"

所以我尝试根据我的用例对其进行调整:

 Start-Process powershell.exe -Verb Runas -ArgumentList "-Command & {Start-BitsTransfer  -Source  'https://download.com/file.zip' -Destination 'E:\test\file.zip'}"

但所做的只是打开一个新的 PS-Window 然后立即关闭它。我的错误在哪里?

你可以改成这个

Start-Process powershell.exe -Verb Runas -ArgumentList "& {Start-BitsTransfer  -Source  'https://download.com/file.zip' -Destination 'E:\test\file.zip'}"

注意 window 将在执行完成后关闭。如果您想查看 output/errors(例如您的非工作示例中显示的内容),只需添加另一个暂停命令即可。

Start-Process powershell.exe -Verb Runas -ArgumentList "& {Start-BitsTransfer  -Source  'https://download.com/file.zip' -Destination 'E:\test\file.zip';pause}"

&用于调用命令。它对于执行字符串或脚本块很有用。它在子运行空间中运行。

& 'Get-Host'
& 'Write-Host' Hello -Fore Green
& {Write-Host Goodbye -Fore Cyan}

;用于分隔同一行的不同命令

& {$name = 'Doug';Write-Host Hello $name}

您还可以使用句点来调用当前运行空间中的脚本块。在前面的命令中, $name 变量在调用者范围内将为空,而下面的命令将保留变量定义。

& {$name = 'Doug';Write-Host Hello $name}
$name # empty as it all happens in the child scope

. {$name = 'Doug';Write-Host Hello $name}
$name # populated because it's brought into the caller's scope