通过快捷方式在具有管理员权限的UNC路径上运行PowerShell脚本

时间:2019-02-07 12:40:57

标签: powershell elevated-privileges

我创建了一个PowerShell脚本,以为整个公司的系统管理员安装一些按需功能。我已经为脚本创建了快捷方式,并在高级选项中选择了“以管理员身份运行”。当我直接运行脚本时,它会运行,但是会出现错误状态:

The requested operation requires elevation

如果我从快捷方式运行脚本,则会弹出UAC以允许以管理员身份运行,然后单击“是”,然后弹出“黑色CMD”框,然后立即关闭。它不会显示脚本的任何部分,并且不会像脚本中的脚本那样在结尾处暂停。在快捷方式的目标中:

powershell.exe -ExecutionPolicy Bypass

还是有同样的问题。

如果我在脚本中放置了powershell.exe -ExecutionPolicy旁路,它将在原始窗口的顶部打开一个Admin Powershell窗口,但是该脚本在下面的窗口中运行。我只能假设它会在C:\Windows\System32

处启动管理窗口。

是否可以运行命令以管理员身份启动PowerShell并直接在UNC路径上转到我的脚本?

与此相关的链接:

启动过程Powershell.exe -Verb runAs-文件“ \ SERVER \ Scripts \ Script.ps1”

还是有更好的方法来获取我的快捷方式,以管理员身份启动UNC路径上脚本的脚本?

1 个答案:

答案 0 :(得分:2)

经过大量研究后,我发现了问题所在。原来我认为管理框是从C:\ Windows \ System32开始并且没有任何参数传递给该框以告诉它要写的内容是正确的。经过一番尝试和错误之后,这就是我要做的事情,并且已经完全完成了我想要做的事情:

在快捷方式中,我删除了“高级”下的“运行方式管理员”选项。我向快捷方式的目标添加了一些值:

powershell -ExecutionPolicy Bypass "\\UNC\To\Script.ps1"

这启动了一个启动脚本,该脚本在用户模式下运行。为了使脚本完成管理功能,我将这些命令移到了另一个脚本“ AdminScript.ps1”,并从Script.pst1调用它,如下所示:

Start-Process powershell -Argument "-ExecutionPolicy Bypass -noexit \\UNC\Path\to\AdminScript.ps1" -Verb runAs

然后这将启动“管理Powershell”窗口,并将ExecutionPolicy设置为“绕过”,因为它默认启动为“受限制”。

从那里,我可以使用管理权限完成FoD的安装。