33

这里有很多问题询问如何从 powershell 提升权限,几乎所有人都推荐这个命令:

Start-Process -Verb RunAs powershell.exe .....

(或 Powershell Core 的 pwsh.exe)

这很有效,在通过 UAC 块验证访问权限后,它会打开一个具有提升权限的新 Powershell 窗口。

但是,当我使用 Powershell 时,我是在 Windows Terminal(Windows 10 的新终端应用程序)中执行此操作的,并且我想以提升的权限打开一个新的 Windows Terminal 实例,而不仅仅是一个 Powershell 窗口。

所以我尝试了这些命令:

Start-Process -Verb RunAs wt
Start-Process -Verb RunAs wt.exe
Start-Process -Verb RunAs (Get-Command wt)
Start-Process -Verb RunAs "C:\Users\lasse\AppData\Local\Microsoft\WindowsApps\wt.exe"

他们都失败了:

启动进程:此命令无法运行,因为错误:系统无法访问文件..

我假设这与可执行文件所在的位置有关,在我的配置文件中,但是如果我右键单击任务栏上的 Windows 终端图标并选择以管理员身份运行它,它会很好地打开。这就是我想要复制的。

那么有没有办法让我修改我上面尝试过的命令,或者更改一些可以使其工作的访问设置?

对于我的具体例子,我只是想让弹出一个管理终端更简单,我不需要提升任意命令的方法,然后我会很乐意使用我已经在这里展示的命令。

4

12 回答 12

33

目前,如果没有变通方法,您无法wt.exe从命令行打开提升的会话。解决方法包括使用gsudo,使用任务计划程序(我测试了这个并且它可以工作,但您需要使用 wt.exe 的完整路径,您可以跳过快捷方式创建步骤)或者如果您可以使用键盘快捷方式,最简单的方法; 使用键盘快捷键从任务栏以管理员身份运行 Windows 终端。

对于您的用例:

对于我的具体例子,我只是想让打开管理终端更简单,我不需要提升任意命令的方法,然后我会很乐意使用我已经在这里展示的命令。

最简单的方法将起作用:

将 Windows 终端固定为任务栏上的第一项。然后按 Win+Ctrl+Shift+1 以管理员身份打开它。

如果您确实必须从 Windows 终端中的命令行启动 Windows 终端,则在任务计划程序中创建一个任务:

  1. 给任务命名,选中“以最高权限运行”。
  2. 选择“操作”选项卡,单击“新建”,选择“启动程序”作为操作。将完整路径wt.exe放在“程序/脚本字段”中。单击确定。再次单击确定。
  3. 单击“条件”选项卡,取消选中“仅当计算机使用交流电源时才启动任务”。
  4. 单击“设置”选项卡,确保选中“允许按需运行任务”并取消选中“如果运行时间超过则停止任务”。
  5. 最后在您的 shell (Powershell) 中,通过运行以下命令启动提升的 Windows 终端会话:schtasks /run /TN "TASK_NAME"其中 TASK_NAME 是您在步骤 1 中为任务指定的名称。
于 2020-06-23T19:48:15.940 回答
16

尝试这个:

powershell "Start-Process -Verb RunAs cmd.exe '/c start wt.exe'"

另请查看以下链接:

WT.exe 命令行参数: https ://docs.microsoft.com/en-us/windows/terminal/command-line-arguments?tabs=windows

关于在资源管理器(包括管理员)的上下文菜单中添加打开 Windows 终端命令提示符的文章: https ://dkcool.tailnet.net/2020/07/add-open-windows-terminal-command-prompt-to-the-explorer -context-menu-in-windows-10/

关于在资源管理器的上下文菜单中添加 Open Admin Command Prompt 的文章: https ://dkcool.tailnet.net/2019/05/add-open-admin-command-prompt-to-the-explorer-context-menu-in- windows-10/

于 2020-07-29T22:42:24.433 回答
13

不是直接答案,但如果您有PowerToys ,另一种选择是:

  1. Alt + Space,输入终端,
  2. 选择以管理员身份运行(或 Ctrl + Shift + Enter)

您可以使用WinGet安装 PowerToys

于 2020-08-19T07:54:20.610 回答
10

在最近的版本中,这个问题似乎得到了解决。它现在可以正常工作,完全按照您最初尝试和失败的方式 ( Start-Process -verb RunAs wt)。我建议现在再次尝试使用最新版本(至少是 Windows 终端,也许还有 PowerShell)。

不再需要解决方法了!!

于 2021-02-18T15:15:54.447 回答
2

您可以使用此 powershell 脚本创建一个快捷方式以始终以管理员身份运行 Windows 终端:

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\Windows Terminal.lnk")
$Shortcut.TargetPath = "$env:LOCALAPPDATA\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe"
$Shortcut.Save()

$bytes = [System.IO.File]::ReadAllBytes("$Home\Desktop\Windows Terminal.lnk")
$bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON 
[System.IO.File]::WriteAllBytes("$Home\Desktop\Windows Terminal.lnk", $bytes)

您可以粘贴它并从 Windows Powershell ISE 运行它,它将在您的桌面上创建一个 Windows Terminal.lnk 文件。每当您双击该快捷方式时,Windows 终端都会以管理员身份运行

于 2020-10-29T23:25:46.723 回答
2

固定到任务栏并按住Ctrl + Shift,同时左键单击 Windows 终端图标。

于 2021-12-20T20:19:40.480 回答
2

在我的特殊情况下,我还需要一直以管理员身份打开 Windows 终端。我就是这样做的,运行“where wt”来显示Windows Terminal应用程序exe所在的路径,应该是C:\Users\YOURUSER\AppData\Local\Microsoft\WindowsApps\wt.exe。我创建了该文件的快捷方式并在高级属性中选中了“以管理员身份运行”,然后我将其固定为启动并瞧。如果需要,您可以在此之后删除临时快捷方式。

于 2020-07-21T17:19:08.053 回答
1

我知道这个答案与您的问题不完全匹配,但鉴于其他答案也以这种方式定位,我希望这不会干扰讨论。

我总是需要以管理员身份运行 PowerShell,而我只想使用 Windows 终端,因为它的限制不能配置为始终以管理员身份运行。

我讨厌使用我发现在线建议的快捷方式和其他黑客的需要,所以我认为我找到了更好的解决方案,但你必须在启动时支付 1/2 秒的成本。

  1. 使用 _ $PROFILE 找到您的用户配置文件(配置文件是在您启动新会话时自动运行的 Windows PowerShell ISE 脚本)
  2. 使用任何首选编辑器编辑配置文件_代码 $PROFILE
  3. 将以下代码添加到配置文件并保存
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    $host.ui.rawui.windowtitle="Bootstrapper"
    Start-Process -Verb RunAs wt
} else {
    $Processes = Get-Process | Where-Object {$_.mainWindowTitle -eq 'Bootstrapper' -and $_.name -eq 'WindowsTerminal'}
    if($Processes.count -gt 0)
    {
        Stop-Process -Id $Processes[0].id
    }
}

脚本是做什么的?您可以将 Windows 终端图标固定到您的应用程序栏,当您单击此处时,WT 将以非提升用户身份启动,但配置文件将了解是否是这种情况。当您不以管理员身份运行时,它将更改窗口名称并以管理员身份启动新的 WT。新实例还将执行配置文件,如果实例以管理员身份运行,它将查找名为 Bootstrapper 的 WT 并将其终止。这个过程需要一到两秒钟,我更喜欢这种方式而不是右键单击图标。

于 2021-02-04T09:53:48.343 回答
1

Windows Terminal 具有在预览中自动以管理员身份运行的功能;现在不需要变通方法。

于 2022-02-05T17:59:10.220 回答
0

我目前在我的 settings.json 配置文件列表中有以下条目,以将提升的 Windows 终端添加到下拉选项中:

{
    // https://github.com/microsoft/terminal/issues/632#issuecomment-663686412
    "name": "Windows Terminal (elevated)",
    "commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -Command Start-Process -Verb RunAs \"shell:appsFolder\\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App\"",
    "hidden": false,
    "icon": "ms-appx:///Images/Square44x44Logo.targetsize-32.png"
}

带有 GitHub 链接的评论应该可以让您找到我最初找到此信息的位置。

于 2021-12-01T03:32:45.323 回答
0

您很可能只是面临路径问题。我知道您提供的命令示例(例如Start-Process -verb RunAs wt)已经为我工作了一段时间(如@fialdrexs 的回答中所述)。

您是从 Github 版本还是从商店安装 Windows 终端?

于 2021-02-18T16:26:53.463 回答
-2

目前这个问题已经修复,但最终出现了一个奇怪的问题。从 Win+R运行wt.exe,在开始菜单上搜索它,然后从终端启动,显示相同的错误消息。

应用程序无法正确启动 (0xc0000022)。单击确定关闭应用程序。

但是,它在wt通过命令提示符、PowerShell 和 PowerShell Core 执行时有效。

所以只是一个快速的解决方法,启动 PowerShell 并运行命令, Start-Process -Verb RunAs wt.exe; 或更简单的 start -verb runas wt

于 2021-02-25T08:57:38.797 回答