1

Я хотел бы запускать команды в PowerShell с правами администратора? Как я могу это сделать?

Я попытался запустить PowerShell с помощью команды runas , но PowerShell закрывается сразу после ввода пароля.

Я использую Windows 7, и я единственный пользователь на компьютере.

4 ответа4

2

Обычно, когда я вижу, что powershell немедленно закрывается, возникает проблема с политикой выполнения. щелкнув по Orb, напечатав Powershell, затем щелкнув правой кнопкой мыши по ссылке, и "запустите от имени администратора", и она будет открыта таким образом?

Затем вы можете, чтобы увидеть, что происходит, перейдите в папку, где находится ваш скрипт, и выполните a./NameofScript.ps1

2

Если вы уже находитесь в powershell, введите: Start-Process powershell -verb runas

Я пишу функцию sudo для выполнения более мощных задач, таких как выполнение чего-то повышенного и получение результата в той же оболочке, например:

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"};
}
0

Для административных задач у меня большую часть времени работает экземпляр PowerShellISE. Я скопировал ссылку для запуска ISE из All Programs | Аксессуары | Windows PowerShell | Windows PowerShell ISE для панели задач. Чтобы запустить ISE с правами администратора, я нажимаю клавиши Shift + Control, в то время как левый щелчок на значке панели задач. После ответа на диалог UAC все готово.

Примечание: С обычным ISE я почти никогда не использую Диалоги Открытого файла, но перетаскиваю файлы из некоторого окна Проводника в ISE. С ISE, работающим в режиме администратора, это перетаскивание не возможно по некоторым причинам безопасности.

0

PowerShell ISE находится по адресу% windir%\system32\WindowsPowerShell\v1.0\PowerShell_ISE.exe. Вы можете щелкнуть по нему правой кнопкой мыши и выбрать "Запуск от имени администратора" и запустить скрипт там.

Вы также можете найти его под логотипом Windows> Все программы> Стандартные> Windows PowerShell и сделать то же самое с этими ярлыками.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .