eri*_*i0o 24 windows powershell sudo
每当我需要运行 powershell 脚本时,它都会抱怨安全性,如果我添加,powershell.exe -nologo -executionpolicy bypass -File .\install.ps1我仍然会得到权限被拒绝的未授权访问异常。我只想运行此安装脚本,在 Windows 上的 powershell 上键入的 sudo 等效项是什么?
Sea*_*ean 24
如果你使用 Chocolatey(一个包管理器),你可以安装一个名为sudo.
然后你可以像Linux一样使用sudo

mkl*_*nt0 17
注意:如果您希望向PowerShell添加通用的、预打包的 sudo类似功能,请考虑此 Gist 中的
Enter-AdminPSSession( psa) 函数,在本答案的底部部分进行了讨论。
如果您已经从 PowerShell运行,请Start-Process -Verb RunAs按如下方式使用:
Start-Process -Verb RunAs powershell.exe -Args "-executionpolicy bypass -command Set-Location \`"$PWD\`"; .\install.ps1"
Run Code Online (Sandbox Code Playgroud)
笔记:
$env:windir\System32,一个Set-Location是切换到来电者的工作目录调用($PWD)被预先计划。
pwsh.exe) 中不再需要这样做,因为调用者的当前位置是继承的。Set-Location需要使用-Command代替-File。
-nologo.-Command可以改变传递给脚本的参数的解释方式(在您的情况下没有),因为它们的解释方式与您在 PowerShell 中传递参数时的解释方式相同,而-File将它们视为文字。如果您从PowerShell 外部调用,通常是从cmd.exe/ 批处理文件,则需要将上述内容包装在对 的外部调用中powershell.exe,这使引用方面的事情变得复杂,不幸的是:
powershell.exe -command "Start-Process -Verb RunAs powershell.exe -Args '-executionpolicy bypass -command', \"Set-Location `\"$PWD`\"; .\install.ps1\""
Run Code Online (Sandbox Code Playgroud)
当然,您可以交互式地:
右键单击 PowerShell 快捷方式(在您的任务栏或开始菜单中,或在您的桌面上),选择Run as Administrator打开一个以管理员权限运行的 PowerShell 窗口,然后.\install.ps1从那里运行。
或者,您可以从现有的 PowerShell 窗口中打开一个以管理员身份运行的窗口Start-Process -Verb RunAs powershell.exe,如AdminOfThings 的回答所示。
您可以使用Start-Process命令,然后使用参数-Verb runas来提升。这对于启动提升的进程非常有用。
我创建了一个像这样的 sudo 函数并将其添加到我的 powershell 配置文件中:
function sudo {
Start-Process @args -verb runas
}
Run Code Online (Sandbox Code Playgroud)
示例:以管理员身份打开记事本编辑主机文件
sudo notepad C:\Windows\System32\drivers\etc\hosts
Run Code Online (Sandbox Code Playgroud)
如果你想提升 Powershell 命令的权限,你可以创建一个简单的函数,如下所示:
function Start-ElevatedPS {
param([ScriptBlock]$code)
Start-Process -FilePath powershell.exe -Verb RunAs -ArgumentList $code
}
Run Code Online (Sandbox Code Playgroud)
然后,调用该函数并传递包含在{}(脚本块)中的命令
示例:提升以创建符号链接
Start-ElevatedPS { New-Item -ItemType SymbolicLink -Name mySymlink.ps1 -Target C:\myTarget.ps1 }
Run Code Online (Sandbox Code Playgroud)
截至今天(2021 年 10 月),winget install gerardog.gsudo成功了(在 Windows 10 家庭版上)。编辑:也在 Windows 11 上进行了测试(2022 年 4 月)
之后,你可以这样做:
gsudo notepad C:\windows\system32\something-editable-by-admin-only.txt
Run Code Online (Sandbox Code Playgroud)
要测试它是否有效,或者在您的情况下:
gsudo powershell.exe install.ps1
Run Code Online (Sandbox Code Playgroud)
Windows UAC 会提示您通过 gsudo 提升权限,您可以在此处阅读源代码: https: //github.com/gerardog/gsudo
您可以使用“以管理员身份运行”选项启动 PowerShell:
Start-Process powershell -Verb runAs
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40003 次 |
| 最近记录: |