将此代码放在 PowerShell 脚本中使其自我提升:
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(
[Security.Principal.WindowsBuiltInRole] 'Administrator'))
{
Start-Process PowerShell -ArgumentList "-File", ('"{0}"' -f $MyInvocation.MyCommand.Path) -Verb RunAs
exit
}
#Main code here
但是,在 PS 用户配置文件中使用它的功能并从脚本调用该功能时,它不起作用。新的 PowerShell 管理会话已打开,但未读取主脚本代码。
function Elevate-NoAdmin
{
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(
[Security.Principal.WindowsBuiltInRole] 'Administrator'))
{
Start-Process PowerShell -ArgumentList "-File", ('"{0}"' -f $MyInvocation.MyCommand.Path) -Verb RunAs
exit
}
}
有什么想法为什么它不能作为一项功能起作用,以及是否可以使它起作用?
通过定义一个参数来重写函数,该参数有助于将脚本路径作为变量传递给 PS 用户配置文件中的函数。否则它将使用 PS 用户配置文件的路径。
在脚本中:
或者