【发布时间】:2017-08-21 17:40:08
【问题描述】:
我编写了一个 Powershell 模块,其中包含利用 IIS 的 WebAdministration Powershell 模块的 cmdlet。但是,此模块要求将其加载到管理员 Powershell 会话中,否则将引发异常。您可能知道或猜到,当 Powershell 未以管理员身份首次运行时,我的自定义模块无法加载。
这种行为是可以接受的,也是意料之中的。我的问题是是否有办法在加载此模块时提升 shell 的权限(并遵守 UAC 设置)?
示例:(假设在这种特殊情况下,Import-Module WebAdministration 位于我的 powershell 配置文件中)
- 我单击任务栏上的 powershell 快捷方式。
- 具有标准用户权限的 powershell shell 打开,并尝试导入模块。
- 遇到模块需要提升权限的事实。
- 系统会提示用户这样做,并且 powershell 会重新启动。
【问题讨论】:
-
我认为可以提升自身权限的模块可能会暴露 PowerShell 中的一些主要安全漏洞。您也许可以考虑使用 JEA 创建一个角色/用户,以便在执行具有成功所需的有限权限的脚本时使用:msdn.microsoft.com/en-us/library/dn896648.aspx
-
一个 PowerShell 脚本可以检查和自我提升(使用
Start-Process -Verb RunAs),但是对于 module 来说这样做是不好的形式。在任何情况下,都没有一种方法可以重新启动会话,同时保留迄今为止所做的所有更改(这确实是您从模块中安全地执行此操作所需要的)。
标签: powershell