Powershell模块和管理员权限

时间:2017-03-28 15:02:10

标签: powershell

我编写了一个Powershell模块,其中包含使用IIS的WebAdministration Powershell模块的cmdlet。但是,此模块要求将其加载到管理员Powershell会话中,否则将引发异常。您可能知道或猜测,当Powershell首次作为管理员运行时,我的自定义模块无法加载。

这种行为是可以接受和预期的。我的问题是,当加载这个模块时,是否有办法提升shell的权限(并遵守UAC设置)?

示例:(假设在这种特殊情况下,我的powershell配置文件中找到了Import-Module WebAdministration

  1. 我单击任务栏上的powershell快捷方式。
  2. 打开具有标准用户权限的powershell shell,并尝试导入模块。
  3. 遇到事实,模块需要提升权限。
  4. 系统会提示用户执行此操作并重新启动PowerShell。

1 个答案:

答案 0 :(得分:1)

  

我的问题是,在加载此模块时是否有提升shell权限的方法?

如果可以在没有提示的情况下静默提升,那将是一个安全漏洞。但是你可以使用这样的代码来确保模块在你没有运行高架时会抛出错误(而不是加载):

$Elevated = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if ( -not $Elevated ) {
  throw "This module requires elevation."
}