在 PowerShell 6.0 提升会话之前,您运行了命令
Start-Process powershell -Verb runAs
尝试在 PowerShell 6.0 中运行类似的命令时
Start-Process pwsh -Verb runAs
你会得到这个输出:
启动进程:此版本的 PowerShell 上的 cmdlet "启动进程"不支持参数"-Verb"。
行:1 字符:1
+ 启动过程 pwsh -动词运行
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~ + 分类信息 : 未实现: (:)[启动过程], 不支持异常
+ FullQualifiedErrorId : NotSupportedException,Microsoft.PowerShell.Commands.StartProcessCommand
那么,如何在 PowerShell 6.0 中提升为以管理员身份运行呢?
我正在运行PowerShell Windows Nano Server docker image (microsoft/powershell:nanoserver(
当我发布问题时,我想完成的是使用以下命令将证书添加到 Windows 证书存储:
certoc.exe -addstore root corporaterootssl.cer
在Windows Nano Server容器中执行此命令时,我收到的消息被拒绝访问。这是因为我使用以下命令与标准用户 ContainerUser 一起运行容器:
docker run -d microsoft/powershell:nanoserver
我将使用以下命令连接到容器:
docker exec -it gracious_ramanujan pwsh
这会让我进入以 ContainerUser 身份运行的容器中。要以容器管理员身份输入容器,我需要运行以下命令:
docker exec -it --user ContainerAdministrator gracious_ramanujan pwsh
然后我能够成功运行任何管理命令。
我的最终目标是构建一个容器映像,在此期间我需要以管理员身份运行一个或多个命令。要在 Dockerfile 中切换用户,请使用命令 USER ContainerAdministrator
。我写了一篇博客文章,详细介绍了如何在 Docker 构建过程中向映像添加 SSL 证书。
我的回答是错误的,不适合OP的问题。尽管如此,我会解释为什么它是错误的,而不是删除答案。
你的答案Start-Process pwsh -Verb runAs
PowerShell 7 中按预期工作。
但是,答案是错误的,因为这不会提升当前的 shell,而是打开一个新的 shell。我还没有验证它是否也适用于PowerShell 6。似乎OP的问题特定于docker而不是PowerShell,因此这也可以在PowerShell 6中工作。