function Run-Elevated ($scriptblock)
{
# TODO: make -NoExit a parameter
# TODO: just open PS (no -Command parameter) if $scriptblock -eq ''
$sh = new-object -com 'Shell.Application'
$sh.ShellExecute('powershell', "-NoExit -Command $scriptblock", '', 'runas')
}
#at top of script
if (!
#current role
(New-Object Security.Principal.WindowsPrincipal(
[Security.Principal.WindowsIdentity]::GetCurrent()
#is admin?
)).IsInRole(
[Security.Principal.WindowsBuiltInRole]::Administrator
)
) {
#elevate script and exit current non-elevated runtime
Start-Process `
-FilePath 'powershell' `
-ArgumentList (
#flatten to single array
'-File', $MyInvocation.MyCommand.Source, $args `
| %{ $_ }
) `
-Verb RunAs
exit
}
#example program, this will be ran as admin
$args
Pause
# PowerShell 5 (old version built into windows)
function GoAdmin { Start-Process powershell –Verb RunAs }
# PowerShell Core (the latest PowerShell version from GitHub)
function GoAdmin { Start-Process pwsh –Verb RunAs }
根据 Microsoft的说法,Powershell v2 的方式是右键单击快捷方式并选择Run as Administrator。
并在 Powershell 窗口中提升:
从 cmd.exe 批处理文件、快捷方式或运行行看起来(重复地)如下所示:
最简单的方法是使用管理令牌启动 Powershell。为此,您可以右键单击 Powershell(或它的快捷方式),然后单击“以管理员身份运行”。或者,您可以使用elevate.cmd。
这将打开一个新的 powershell 实例:
我预计这会存在问题 - 特别是,您不会在调用脚本中获得脚本块的输出。另一方面,它将存在于新的 PS 实例中,因此您可以在那里破解它。
您可以在运行时使用它来自我提升脚本:
注意这仍然遵守安全规则(如执行策略),并且会很好地提示 UAC。这可以解决,但你不应该。
如果您想始终以管理员权限运行 PowerShell,您可以右键单击 PowerShell 快捷方式,然后单击“快捷方式”选项卡上的“高级...”按钮,然后选择“以管理员身份运行”。
简单的方法...
这是如何设置一个简单的命令,以便在任何 PowerShell 会话中随时获取管理员权限!
第 1 步:打开您的 PowerShell 配置文件。(如果文件丢失,允许记事本创建文件。)
第 2 步:将以下代码行之一粘贴到该文件的任何位置。根据您要运行的 PowerShell 版本选择下面的命令,并注意配置文件是特定于版本的,因此如果您并行运行它们,您必须为每个不同的 PowerShell 版本配置文件执行此操作。
步骤 3:重新启动 PowerShell。该命令现在永久可用。
第 4 步:任何时候你想进入管理员,只需输入
GoAdmin
(不要担心输入正确的大小写;PS 函数实际上不区分大小写)。您当然可以将函数命名为其他名称Elevate
或其他名称,但我不希望有任何冲突的风险,因此我将其命名为不带任何连字符的两个词短语,以确保它永远不会与 PowerShell 自身的功能发生冲突。请注意,管理员窗口在单独的 shell 中打开。您可以关闭原始外壳,或保持打开状态。如果您的管理员工作做了一些“大”的事情,例如添加/修改环境变量,那么您的用户外壳(非管理员)可以简单地键入
refreshenv
以重新加载其环境并获取更改。(编辑:发现refreshenv
是由伟大的Chocolatey包管理器提供的。Update-SessionEnvironment
如果你没有 Chocolatey,请输入。)因此,基本上,只需
GoAdmin
执行诸如安装软件包之类的管理操作(当然是使用https://chocolatey.org/!),然后关闭管理窗口并refreshenv
在您的用户 shell 中运行!瞧。