【问题标题】:how to change PowerShell mode to fulllanguage mode from constrained mode?如何将 PowerShell 模式从约束模式更改为全语言模式?
【发布时间】:2019-07-15 02:53:12
【问题描述】:

我打开 PS 或 PSISE,它们都是我没想到的约束语言模式。

我不知道为什么它是 ConstrainedLanguage。两天前只是PSISE处于约束模式,而PS是全语言模式。现在我重新启动计算机后,它们都是约束模式,这让我很困扰,因为我真的需要使用完整模式..

我尝试以管理员身份启动 PS,但无法正常工作。尝试创建一个新的环境变量__PSLockdownPolicy并将其设置为1或0,仍然无法正常工作。

我尝试了“powershell.exe -version 2”,它是全语言版本,但版本 2 太低,无法使用某些高级模块。

PS C:\windows\system32> $ExecutionContext.SessionState.LanguageMode
ConstrainedLanguage

PS C:\windows\system32> $ExecutionContext.SessionState.LanguageMode = 'fulllanguage'
Cannot set property. Property setting is supported only on core types in this language mode.
At line:1 char:1
+ $ExecutionContext.SessionState.LanguageMode = 'fulllanguage'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertySetterNotSupportedInConstrainedLanguage

我希望我能以全语言模式打开 PS。感谢您的所有帮助!

【问题讨论】:

  • 与您的管理员交谈。听起来您的系统被故意配置为受限模式。
  • 对于寻求类似问题答案的任何人,我们深表歉意。但我的问题不是系统或电脑的问题,只是我的管理员将语言模式设置为约束模式,与我的电脑或系统无关。总之谢谢大家的帮助~
  • 哈!这是有道理的......谢谢你说清楚! [咧嘴]

标签: powershell windows-7


【解决方案1】:

锁定策略在 PowerShell v2 中不可用。您可以通过从管理命令提示符运行来检查您是否将组策略应用于您的计算机:

gpresult /v 

您可以搜索 PowerShell 的输出以查找可能由系统管理员应用到系统的 PowerShell 相关组策略。

你可以检查一下

$Env:__PSLockdownPolicy

如果已配置,则设置为 8 = 全语言模式。 这可以在注册表 HKLM\System\CurrentControlSet\Control\SESSION MANAGER\Environment__PSLockdownPolicy

中配置

如果您找不到锁定 PowerShell 启动 ProcMon 的原因并设置过滤器:

  • 操作是 RegQueryValue Include
  • 进程名称为 PowerShell.exe 包含
  • 进程名称为 PowerShell_Ise.exe 包含
  • 结果成功

然后启动 PowerShell,您可以查看已加载的键,并检查详细信息列中的值设置。通过这种方法,您可以识别锁定 PowerShell 的任何注册表配置。如果锁定是由组策略应用的,您可以删除密钥以暂时启用它,但一旦组策略重新应用,如果未从管理级别更改,该设置将恢复。

【讨论】:

  • 原来是我的管理员将语言模式设置为约束模式。与我的计算机或系统无关。无论如何感谢您的帮助:)
  • 是的,这就是我说检查 gpresult 的原因,因为它会显示管理员是否正在配置它。如果您有本地管理员,您至少可以通过注册表编辑器临时更改该策略,但每隔几个小时就会重新应用一次,并且可能会被视为违反您的公司政策。可以为策略创建技术豁免,但取决于您的管理员。
【解决方案2】:

我也遇到了这个问题,但在我的情况下,我是设置此策略以进行测试的管理员,但无法将其删除。我发现当我将它与 AppLocker 脚本规则结合使用时,它会将其设置为 ConstrainedLanguage,因为:

从版本 5 开始,PowerShell 会自动识别是否应该 根据脚本规则切换到受限语言模式。为此, 它创建一个模块和一个脚本(名称遵循模式 __PSSCRIPTPOLICYTEST_LQU1DAME.3DD.PS1) 在 $env:temp 下并尝试执行它们。如果 AppLocker 或其他工具阻止了此尝试, PowerShell 以受限语言模式启动。

来源:https://4sysops.com/archives/mitigating-powershell-risks-with-constrained-language-mode/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多