如何以管理员权限在 PowerShell 中运行命令?

如何以管理员权限在 PowerShell 中运行命令?

我想以管理员权限在 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 下找到它,并使用这些快捷方式执行相同的操作。

相关内容