【问题标题】:How to execute script in administrator mode without prompt for selection from user side?如何在管理员模式下执行脚本而不提示从用户端选择?
【发布时间】:2015-09-08 06:58:22
【问题描述】:

我有一个 PowerShell 脚本 Admin.PS1,它将以管理员身份打开运行 other.PS1 PowerShell 脚本。代码如下:

$ScriptPath = "D:\usefull_PS_files\toNode\other.PS1"
$RelaunchArgs = '-ExecutionPolicy Unrestricted -file "' + $ScriptPath + '" -IsRunAsAdmin'
# Launch the process and wait for it to finish
try
{
    $AdminProcess = Start-Process "$PsHome\PowerShell.exe" -Verb RunAs -ArgumentList $RelaunchArgs
}
catch
{
    $Error[0] # Dump details about the last error
    exit 1
}

现在发生的情况是,当我执行上面的 PS 脚本时,我得到一个 PowerShell 管理员提示,我必须在其中选择“是”或“否”,但我真正想要的是 Other.PS1 以管理员身份执行而没有任何提示,即无需选择“是”或“否”。 那么,我怎样才能以完全自动化的方式以管理员身份运行任何 PS 脚本而无需我的输入。

【问题讨论】:

    标签: powershell uac


    【解决方案1】:

    AFAICS 有 3 个选项:

    • 禁用 UAC。
    • 从已提升的提示符处运行脚本。
    • 在启用“以最高权限运行”复选框的情况下创建计划任务。

    【讨论】:

    • psexec -h powershell.exe -file other.ps1 可能是另一种选择
    • 绝对不建议禁用 UAC。
    • 我绝对建议在专业环境中禁用 UAC,在这些环境中,您拥有用于管理任务的管理员帐户以及用于普通用户和日常工作的受限帐户。家庭用户是 UAC 可能受益的唯一领域。
    • IMO UAC 即使在专业环境中也是一个明显的优势,因为它不鼓励在以管理员身份登录时“以管理员身份运行所有内容”。禁用它会取消它设计的所有优势。恐怕我们只能同意不同意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多