2

Я прочитал, как открыть файл для редактирования в режиме администратора?

У меня есть файл .ps1, который должен работать от имени администратора. Я рад, что когда я дважды щелкаю по любому файлу .ps1, powershell запускается от имени администратора.

Я зашел в C:\Users\me\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell и сделал оба ярлыка PowerShell для запуска с правами администратора.

Если я открою Powershell из меню «Пуск», меня спросят, хочу ли я разрешить приложению вносить изменения ... Это показывает, что он работает от имени администратора, в сочетании с тем, когда Powershell работает, он отображает администратора в строке заголовка

Однако, когда я дважды щелкаю файл .ps1, он открывается как обычный пользователь (не администратор).

Что еще мне нужно сделать?

4 ответа4

2

Сценарий не будет выполняться при двойном щелчке по нему, но при запуске он будет выполнен с повышенными правами. Вы можете попробовать это:

$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if($principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    # code here...
}
else {
    Start-Process -FilePath "powershell" -ArgumentList "$('-File ""')$(Get-Location)$('\')$($MyInvocation.MyCommand.Name)$('""')" -Verb runAs
}

При этом консоль без повышений выйдет.

1

.ps1 по умолчанию связаны с Notepad.exe по своему дизайну. Двойной щелчок просто откроет .ps1 в блокноте для просмотра или редактирования. Это было сознательное решение по безопасности от MS.

Windows PowerShell Защита оболочки https://technet.microsoft.com/en-us/library/2007.09.powershell.aspx

Конечно, вы можете изменить эту связь на powershell.exe, но, опять же, вы подвергаете себя ненужным рискам. Если это на предприятии, у вашей команды безопасности могут быть слова для вас, или это может в конечном итоге быть и RPE (возобновить создание события).

Все это, как говорится. Неважно, что вы делаете с ярлыками, это не то, как двойной щелчок будет работать.

Двойной щелчок, не запускает ярлык, он запускается со связанным приложением, в случае ...

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

Если у вас есть сценарии, для которых требуются права администратора / или вы хотите запускать с правами администратора, то вам нужно написать код в сценарии, чтобы перезапустить с правами администратора, если он не был запущен таким образом. Теперь это означает, что вы окажетесь в новом сеансе PoSH по сравнению с тем, в котором вы начали, и это специально.

Опять же, изменение ассоциации файлов на автоматическое выполнение - это просто плохая практика, и вы подвергаетесь тем же рискам из предыдущих дней .vbscript.

0

Скопируйте / вставьте ярлык powershell в место, откуда вы хотите запустить скрипт. Щелкните правой кнопкой мыши новый ярлык, выберите «Свойства», а затем «Дополнительно» и убедитесь, что он настроен на запуск от имени администратора. Затем в поле в поле target введите путь и имя сценария после powershell.exe.

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\myscripts\my-awesome-script.ps1

Убедитесь, что вы используете "кавычки" вокруг вашего добавления, если в пути или имени файла есть пробелы, например:

"c:\my scripts\some script with spaces.ps1"

Это запустит новый PowerShell как администратор и автоматически запустит скрипт в новой оболочке.

Возможно, вы также захотите переименовать ярлык, чтобы указать, что он предназначен для определенного сценария, а не для обычного сеанса PowerShell. Щелкните правой кнопкой мыши, переименуйте.

0

объяснение

Windows не допускает собственного запуска сценария PowerShell, вам необходимо обновить политику выполнения для вашего пользователя или выбранного пользователя, чтобы использовать их.

Ответ

  1. Откройте PowerShell (в режиме администратора, если необходимо)
  2. Изменить политику выполнения Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  3. Введите Get-Execution -List чтобы увидеть всю политику выполнения

            Scope    ExecutionPolicy
            -----    ---------------
    MachinePolicy    Unrestricted
    UserPolicy          Undefined
    Process             Undefined
    CurrentUser      RemoteSigned
    LocalMachine     Unrestricted
    

Если это по-прежнему не работает, вы можете использовать Windows PowerShell ISE, который является PowerShell IDE

  1. Щелкните правой кнопкой мыши на файле * .ps1
  2. Открыть с помощью → Windows PowerShell ISE

Или просто сначала откройте ISE.

Безопасность

Microsoft не позволяет вам запускать сценарий PowerShell по умолчанию по серьезным соображениям безопасности, кто-то может легко запустить сценарий на вашем компьютере и получить полный доступ ! Чтобы избежать этого, пожалуйста, верните политику выполнения в прежнее состояние.

Документация Microsoft

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