Как запустить сценарии powershell без прав администратора?

Если я пытаюсь изменить политику выполнения, я получаю сообщение о том, что я не могу изменить реестр, потому что я не администратор.

кажется, что это должно быть возможно, так как я могу запускать пакетные файлы и другие .exe и .программы com.

5 ответов


вы можете попробовать и установить политику самого процесса.

powershell.ехе -параметра ExecutionPolicy обход


Если ваш администратор домена не запретил это, вы можете сделать следующее:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

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

Если вместо этого вы хотите изменить политику выполнения только для текущего сеанса PowerShell, вы можете использовать следующую команду:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

однако, если ваш администратор домена использует "включить сценарий Казнь" групповая политика, вы не сможете изменить свою политику выполнения вообще. Параметр групповой политики делает Набор-Параметра ExecutionPolicy командлет неэффективными.


как о

$script = Get-Content .\test.ps1
Invoke-Expression $script

если вы хотите иметь простой способ запустить скрипт myscript.ps1 из оболочки Windows, то все что вам нужно-это летучая мышь Runmyscript.bat следующего содержания:

type myscript.ps1 | powershell -

так просто, что заставляет меня задуматься, почему вы не можете просто запустить ps1 в первую очередь, но там мы идем.

универсальная версия, которая запрашивает userinput для ввода имени скрипта, будет:

set /p filename="Type name of script here: "
type %filename% | powershell -

Я полагаю, если вы хотите, вы также можете написать общий скрипт vbscript, который открывает любой файл в powershell с помощью диалогового окна http://todayguesswhat.blogspot.co.uk/2012/08/windows-7-replacement-for.html


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

powershell.exe-EncodedCommand XXXXXXX

где XXXXXXX является результатом

$code = {
     #powershell script goes here.
    }
}

[convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($code))

Ref: http://dmitrysotnikov.wordpress.com/2008/06/27/powershell-script-in-a-bat-file/