Я пытаюсь выполнить скрипт powershell через командный файл, в данный момент я только тестирую его, чтобы он запустился, поэтому файл .ps1 - это просто сценарий hello world.

Это ПОЧТИ работает отлично, за исключением того, что есть ключ, который можно бросить в работу;

Я пытаюсь сохранить .ps1 в удаленном месте (если быть точным, на общем NAS). Это работает, когда у меня есть .ps1, сохраненный локально, и указываю .bat на локальный .ps1.

Однако теперь, когда .ps1 находится в удаленном месте, я брошен со следующей ошибкой;

"файл (путь) не может быть загружен. Файл (путь) не имеет цифровой подписи. Скрипт не будет выполняться в системе "

Теперь я знаю о правилах выполнения и мои следующие:

MachinePolicy  =   RemoteSigned
UserPolicy     =   Undefined
Process        =   Undefined
CurrentUser    =   RemoteSigned
LocalMachine   =   Bypass

Я попытался изменить CurrentUser на Bypass, но меня сбрасывает следующее;

Windows Powershell успешно обновил политику выполнения, но этот параметр переопределяется политикой, определенной в более конкретной области

Снимок экрана с ошибкой выше

Благодарим за любую идею!

Извините, если это было много информации! Если что-то неясно, не стесняйтесь просить меня уточнить! Я довольно новичок во всем этом!

4 ответа4

2

Вы по-прежнему можете запускать сценарий - вам просто нужно указать PowerShell обойти политику выполнения системы следующим образом:

powershell.exe -executionpolicy bypass -file \\server\share\yourscript.ps1
0

Я думаю, что GroupPolicy, настроенный компанией, применяет политику, чтобы отозвать любое выполнение скрипта из удаленного местоположения. Пожалуйста, проверьте групповую политику в административных инструментах.

0

Другой ответ может на самом деле быть ответом, но в случае, если вы (или кто-либо еще) ищете обходной путь, вот оно.

В вашем пакетном файле сначала скопируйте файл .ps1 в локальную папку, такую как C:\TEMP, а затем запустите его, используя start c:\temp\My_Script.ps1

Команда start заставит скрипт работать так же, как дважды щелкнув его в проводнике. Возможно, вам не нужно копировать его локально, если вы использовали другой способ запуска файла.

0

Для аспекта .bat только обходной путь - создать файл .bat, который использует операторы echo для построения локального сценария powershell, а затем выполнить локальный сценарий.

Насколько это будет практично, зависит от сложности сценария.

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