Этот ответ является автоматическим переводом, поэтому в нём могут быть грамматические ошибки или неестественные выражения.
Здравствуйте Андрей Владимирович,
Спасибо, что задали вопрос на форуме Microsoft Q&A.
Основываясь на моем исследовании, я также прочитал о WDAC (Windows Defender Application Control) и Политике ограничения использования программ (SRP). WDAC — это гораздо более глубокая и мощная функция безопасности. Она встроена в ядро Windows. Поскольку WDAC — это функция безопасности системного уровня, обычный пользователь не может изменять ее правила.
Справочные материалы по WDAC: https://learn.microsoft.com/ru-ru/windows-server/manage/windows-admin-center/use/manage-application-control-infrastructure
Есть две статьи, которые я проверил и которые могут быть похожи на вашу ситуацию:
https://community.spiceworks.com/t/allow-scripts-to-run-fulllanguage-in-wdac/1171888
(Эти обсуждения ведутся на английском языке, пожалуйста, воспользуйтесь вашим переводчиком, чтобы перевести их на свой язык)
Примечание: Корпорация Microsoft предоставляет эту информацию для вашего удобства. Эти сайты не контролируются корпорацией Microsoft. Корпорация Microsoft не несет никакой ответственности за качество, безопасность или пригодность любого программного обеспечения или информации, найденных там. Пожалуйста, убедитесь, что вы полностью осознаете риски, прежде чем использовать какие-либо предложения по указанным ссылкам.
С моей точки зрения, я могу придумать только два способа, и оба требуют, чтобы вы один раз использовали повышенные права (Администратора) для изменения политики WDAC:
1.Доверие приложению (Правило хэша / Hash Rule): Администратор должен создать правило политики WDAC, которое "доверяет" вашему портативному файлу powershell.exe.
2.Доверие скриптам (Правило подписи / Signer Rule):
- Администратор создает сертификат для подписи кода.
- Вы подписываете свои скрипты .ps1 этим сертификатом.
- Администратор создает правило политики WDAC, которое "доверяет" этому конкретному сертификату.
В обоих случаях, как только Администратор внесет это изменение, ваш портативный PowerShell или ваши скрипты станут "доверенными" и будут автоматически запускаться в режиме FullLanguage, даже когда вы запускаете их от имени обычного пользователя. Но без помощи Администратора для изменения политики WDAC у вас нет другого выбора.
К сожалению, моя тестовая среда также вернула значение "FullLanguageMode" при выполнении этой команды:
$ExecutionContext.SessionState.LanguageMode в PowerShell. У меня не было возможности провести реальный тест в режиме ConstrainedLanguageMode. Если вы рассматриваете мои предложения, я мог бы попытаться провести исследование и предоставить способ, как это сделать, но для этого также потребуются повышенные права.
Надеюсь, эта информация будет полезной. Пожалуйста, дайте мне знать, если у вас возникнут дополнительные вопросы.
Если ответ был полезен, пожалуйста, нажмите "Принять ответ" и проголосуйте за него. Если у вас есть дополнительные вопросы по этому ответу, пожалуйста, нажмите "Комментарий".
Примечание: Пожалуйста, следуйте шагам в нашей документации, чтобы включить уведомления по электронной почте, если вы хотите получать соответствующие email-уведомления для этой темы.