我想以管理员权限在 PowerShell 中运行命令?我该怎么做?
我尝试使用以下方式启动 PowerShell鲁纳斯命令,但是在我输入密码后 PowerShell 会立即关闭。
我使用 Windows 7,我是电脑上唯一的用户。
答案1
通常当我看到 powershell 立即关闭时,这是一个问题执行策略。单击 Orb,输入 Powershell,然后右键单击链接,然后“以管理员身份运行”并以这种方式打开它?
然后,您可以查看发生了什么,导航到脚本所在的文件夹,然后执行 ./NameofScript.ps1
答案2
如果您已经在 powershell 中,请输入:Start-Process powershell -verb runas
我编写了一个 sudo 函数来完成更强大的事情,比如执行一些提升权限的操作并在同一个 shell 中获取结果,例如:
sudo {rm fileThatNeedElevatedRightsToBeDeleted; ls}
以下是代码:
function sudo(){
param([String] $code)
$viejos = gps powershell
$here = add-quotes (get-location).path
$resultPath = [IO.Path]::GetTempPath() + "temp.result.xml";
$code = "set-location $here; function Run{$code};Run $args|Export-Clixml $resultPath"
$encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($code))
start-process PowerShell.exe -verb Runas -argumentlist '-encodedCommand',$encoded
$nuevos = gps powershell
$array = New-Object Collections.Generic.List[int]
$array2 = New-Object Collections.Generic.List[int]
$viejos | %{$array.add($_.ID)}
$nuevos | %{$array2.add($_.ID)}
$idTowait = $array2 | ?{$array -notcontains $_}
while(1){
$nuevos = gps powershell
$array2.Clear()
$nuevos | %{$array2.add($_.ID)}
if($array2 -contains $idTowait)
{sleep -Milliseconds 500}
else
{break;}
}
if(Test-Path $resultPath){
if((gi $resultPath).length)
{
Import-Clixml $resultPath
rm $resultPath
}
}
else
{"No results"};
}
答案3
对于管理任务,我大多数时间都在运行 PowerShellISE 实例。我将启动 ISE 的链接从“所有程序”|“附件”|“Windows PowerShell”|“Windows PowerShell ISE”复制到任务栏。要以管理员权限启动 ISE,我按下 shift + control 键,同时左键单击任务栏图标。回复 UAC 对话框后,它就准备好了。
注意:使用常规 ISE 时,我几乎从不使用“打开文件对话框”,而是将文件从某些资源管理器窗口拖放到 ISE 中。在管理员模式下运行 ISE 时,出于某些安全原因,无法进行这种拖放操作。
答案4
PowerShell ISE 位于 %windir%\system32\WindowsPowerShell\v1.0\PowerShell_ISE.exe。您可以右键单击它并选择“以管理员身份运行”,然后从那里运行脚本。
您还可以在 Windows 徽标 > 所有程序 > 附件 > Windows PowerShell 下找到它,并使用这些快捷方式执行相同的操作。