Почему мой локально созданный сценарий не разрешен для запуска в соответствии с политикой выполнения RemoteSigned?

Я использую Windows PowerShell 2.0 на 64-разрядной версии Windows 7 Профессиональная.У меня на рабочем столе есть сценарий, который вызывает следующую ошибку при попытке запустить его:

File C:\Users\UserName\Desktop\Script.ps1 cannot be loaded. The file C:\Users\UserName\Desktop\Script.ps1 is not digitally signed. The script will not execute on the system.  Please see "get-help about_signing" for more details..
At line:1 char:54
+ C:\Users\UserName\Desktop\TestGetWindowsUpdateLog.ps1 <<<<
    + CategoryInfo          : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException

Я одновременно являюсь администратором домена и локальным администратором, и если я запускаю Get-ExecutionPolicy -List, я можно увидеть, что Объект групповой политики, который я создал для настройки PowerShell, правильно применяет политику выполнения RemoteSignedна уровне компьютера:

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

Я создал сценарий самостоятельно в Notepadи использовал утилиту Sysinternals' streamsи диалоговое окно Properties файла, чтобы подтвердить, что сценарий не обрабатывается как имеющий пришли из интернета. Если я скопирую сценарий в сетевую папку на сервере домена, его выполнение будет разрешено. Если я запускаю Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine, то локальному сценарию по-прежнему не разрешается выполняться, что имеет смысл, поскольку политика выполнения в области MachinePolicyбудет иметь приоритет.

Как описано вabout_Execution_Policies , политика RemoteSignedозначает:

  • Сценарии могут выполняться.

  • Требуется цифровая подпись от доверенного издателя для сценариев и файлов конфигурации, загружаемых из Интернета (включая программы электронной почты и обмена мгновенными сообщениями).

  • Не требует цифровых подписей для сценариев, которые вы запустили и написали на локальном компьютере (не загруженных из Интернета).

  • Риск запуска неподписанных сценариев из источников, отличных от Интернета, и подписанных, но вредоносных сценариев.

Мой сценарий не подписан, но поскольку он создается и выполняется локально, он должен удовлетворять третьему пункту выше. Так почему его не разрешают запускать? Почему PowerShell жалуется, что мой сценарий «не имеет цифровой подписи», хотя это требование должно применяться только к файлам из Интернета? И почему его больше не волнует, что скрипт не подписан при запуске из сетевой папки?

55
задан Peter Mortensen 10 January 2015 в 00:26
поделиться