有时候我们常常会遇到我们所写的脚本在自己的环境下可以顺利运行,但是将脚本发送给别人后,总是会遇到各种各样的问题。
最后一番耗时诊断后才发现,原来仅仅是因为对方没有以管理员administrator模式运行脚本所导致的脚本没有达到我们预期的执行结果。下面命令可以帮助我们强制用户使用admin 模式去执行我们的脚本。
#Run PowerShell as administrator
If(-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
$arguments = "& '" + $MyInvocation.MyCommand.definition + "'"
Start-Process PowerShell -Verb runAs -ArgumentList $arguments
Break
}
代码一定要预先放置在脚本前才行,代码的原理十分简单,这里我们使用Security.Principal类下的几个必备属性去获取当前用户的角色:
([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
如果发现不是admin模式,就强制使用runAs的方式去开启PowerShell。
Start-Process PowerShell -Verb runAs -ArgumentList $arguments