[玩转系统] 关于语言模式
作者:精品下载站 日期:2024-12-14 02:21:54 浏览:16 分类:玩电脑
关于语言模式
简短描述
解释语言模式及其对 PowerShell 会话的影响。
详细描述
PowerShell 会话的语言模式决定了可以在会话中使用 PowerShell 语言的哪些元素。
PowerShell 支持以下语言模式:
FullLanguage
RestrictedLanguage
ConstrainedLanguage
(在 PowerShell 3.0 中引入)NoLanguage
什么是语言模式?
语言模式决定会话中允许的语言元素。
语言模式是用于创建会话的会话配置(或“端点”)的属性。使用特定会话配置的所有会话都具有该会话配置的语言模式。
所有 PowerShell 会话都有语言模式。会话是使用目标计算机上的会话配置创建的。会话配置中设置的语言模式决定了会话的语言模式。要指定 PSSession 的会话配置,请使用创建会话的 cmdlet 的 ConfigurationName 参数。
从 PowerShell 7.3 开始,您可以使用 ConfigurationFile 参数运行 pwsh
。这允许您使用特定配置启动 PowerShell。
查找会话的语言模式
您可以通过获取会话状态的 LanguageMode 属性值来查找 FullLanguage
或 ConstrainedLanguage
会话的语言模式。
例如:
$ExecutionContext.SessionState.LanguageMode
ConstrainedLanguage
但是,在具有 RestrictedLanguage
和 NoLanguage
模式的会话中,您无法使用成员访问运算符 (.
) 来获取属性值。相反,错误消息会显示语言模式。
当您在 RestrictedLanguage
会话中运行 $ExecutionContext.SessionState.LanguageMode
命令时,PowerShell 将返回 PropertyReferenceNotSupportedInDataSection 和 VariableReferenceNotSupportedInDataSection错误消息。
- PropertyReferenceNotSupportedInDataSection:在受限语言模式或数据部分中不允许使用属性引用。
- VariableReferenceNotSupportedInDataSection:无法在受限语言模式下引用的变量或正在引用数据部分。
当您在 NoLanguage 会话中运行 $ExecutionContext.SessionState.LanguageMode
命令时,PowerShell 将返回 ScriptsNotAllowed 错误消息。
- ScriptsNotAllowed:此运行空间不支持该语法。这可能是因为它处于无语言模式。
查找会话配置的语言模式
当使用会话配置文件创建会话配置时,会话配置具有 LanguageMode 属性。您可以通过获取 LanguageMode 属性的值来查找语言模式。
(Get-PSSessionConfiguration -Name Test).LanguageMode
FullLanguage
在其他会话配置上,您可以通过查找使用会话配置创建的会话的语言模式来间接查找语言模式。
设置语言模式
PowerShell 会话中的语言模式可以通过内置的 $ExecutionContext
变量进行设置。
$ExecutionContext.SessionState.LanguageMode = "ConstrainedLanguage"
然而,这样做仅对尝试语言模式有用。语言模式旨在为特定上下文的 PowerShell 会话提供更高的安全性。
语言模式是在您使用系统应用程序控制策略或创建会话配置时设置的。
使用系统应用程序控制策略
当 PowerShell 在系统应用程序控制策略下运行时,它会自动以 ConstrainedLanguage
模式运行。检测到的应用程序控制策略是 Windows 平台上的 AppLocker 和 Windows Defender 应用程序控制 (WDAC)。
当 PowerShell 检测到应用程序控制策略时,它会应用除语言模式之外的其他限制。例如,政策下对点采购和模块导入有额外的限制。
当 PowerShell 会话在策略下启动时,它将在 ConstrainedLanguage
模式下运行。从 PowerShell 7.4 开始,启动横幅显示包含一条消息,指示它正在该模式下运行。这允许用户获得可用的交互式 shell 体验、运行 cmdlet 和本机命令以及访问基本语言元素。但用户无法访问可能被恶意行为者滥用的 PowerShell、.NET 或 COM API。
在此会话中执行的任何脚本或基于脚本的模块都以 ConstrainedLanguage
模式运行。但是,策略允许的任何脚本或基于脚本的模块都在 FullLanguage 模式下运行,没有任何限制。这样,被策略锁定的系统就可以拥有受策略信任的脚本,并且运行时几乎没有约束。
使用会话配置
PowerShell 远程处理可以选择支持创建自定义会话配置。您可以为该自定义配置设置所需的语言模式。 PowerShell Just Enough Administration (JEA) 配置使用 NoLanguage 模式将会话限制为仅命令调用。使用 JEA,可以将远程会话限制为特定用户。 JEA 用户仅限于运行一组定义的命令,并且无法直接访问 API、文件系统或其他系统资源。
有关详细信息,请参阅 JEA 会话配置和 New-PSSessionConfigurationFile。
语言模式的特点和限制
本节介绍 PowerShell 会话中的语言模式。
全语言模式
FullLanguage
模式允许会话中的所有语言元素。 FullLanguage
是所有 Windows 版本上默认会话的默认语言模式。
限制语言模式
在 RestrictedLanguage
模式下,用户可以运行命令(cmdlet、函数、CIM 命令和工作流),但不能使用脚本块。此模式还用于处理由 Import-Module
加载的模块清单。
从 PowerShell 7.2 开始,配置系统锁定时,在 RestrictedLanguage
模式下禁用 New-Object
cmdlet。
默认情况下,在 RestrictedLanguage
模式下仅允许使用以下变量:
$PSCulture
$PSUICulture
$True
$False
$Null
模块清单以 RestrictedLanguage
模式加载,并且可以使用这些附加变量:
$PSScriptRoot
$PSEdition
$EnabledExperimentalFeatures
$ENV:TEMP
仅允许使用以下比较运算符:
-eq
(等于)-gt
(大于)-lt
(小于)
不允许使用赋值语句、属性引用和方法调用。
约束语言模式
ConstrainedLanguage
模式旨在允许基本语言元素,例如循环、条件、字符串扩展和访问对象属性。这些限制可防止恶意行为者可能滥用的操作。
ConstrainedLanguage
模式允许所有 cmdlet 和 PowerShell 语言元素的子集,但限制可以使用的对象类型。
ConstrainedLanguage
模式的特点如下:
- Windows 模块中的所有 cmdlet 均具有完整功能,并且可以完全访问系统资源(除非另有说明)。
- PowerShell 脚本语言的所有元素都是允许的。
- 可以导入 Windows 中包含的所有模块,并且模块导出的所有命令都在会话中运行。
Add-Type
cmdlet 可以加载已签名的程序集,但无法加载任意 C# 代码或 Win32 API。New-Object
cmdlet 只能用于允许的类型(如下所列)。- 只有允许的类型才能在 PowerShell 中使用。其他类型是不允许的。类型转换是允许的,但仅当结果是允许的类型时才允许。
- 仅当结果类型是允许的类型时,将字符串输入转换为类型的 Cmdlet 参数才有效。
- 可以调用
ToString()
方法和允许类型的 .NET 方法。 - 用户可以获得允许类型的所有属性。用户只能设置允许类型的属性值。
ConstrainedLanguage
模式允许使用以下 .NET 类型。用户可以获取属性、调用方法并将对象转换为这些类型。
允许的类型:
[adsi]
[adsisearcher]
[Alias]
[AllowEmptyCollection]
[AllowEmptyString]
[AllowNull]
[ArgumentCompleter]
[ArgumentCompletions]
[array]
[bigint]
[bool]
[byte]
[char]
[cimclass]
[cimconverter]
[ciminstance]
[CimSession]
[cimtype]
[CmdletBinding]
[cultureinfo]
[datetime]
[decimal]
[double]
[DscLocalConfigurationManager]
[DscProperty]
[DscResource]
[ExperimentAction]
[Experimental]
[ExperimentalFeature]
[float]
[guid]
[hashtable]
[int]
[int16]
[int32]
[int64]
[ipaddress]
[IPEndpoint]
[long]
[mailaddress]
[Microsoft.PowerShell.Commands.ModuleSpecification]
[NoRunspaceAffinity]
[NullString]
[Object[]]
[ObjectSecurity]
[ordered]
[OutputType]
[Parameter]
[PhysicalAddress]
[pscredential]
[pscustomobject]
[PSDefaultValue]
[pslistmodifier]
[psobject]
[psprimitivedictionary]
[PSTypeNameAttribute]
[ref]
[regex]
[sbyte]
[securestring]
[semver]
[short]
[single]
[string]
[SupportsWildcards]
[switch]
[timespan]
[uint]
[uint16]
[uint32]
[uint64]
[ulong]
[uri]
[ushort]
[ValidateCount]
[ValidateDrive]
[ValidateLength]
[ValidateNotNull]
[ValidateNotNullOrEmpty]
[ValidateNotNullOrWhiteSpace]
[ValidatePattern]
[ValidateRange]
[ValidateScript]
[ValidateSet]
[ValidateTrustedData]
[ValidateUserDrive]
[version]
[void]
[WildcardPattern]
[wmi]
[wmiclass]
[wmisearcher]
[X500DistinguishedName]
[X509Certificate]
[xml]
仅允许以下 COM 对象类型:
Scripting.Dictionary
Scripting.FileSystemObject
VBScript.RegExp
无语言模式
PowerShell NoLanguage
模式完全禁用 PowerShell 脚本语言。您无法运行脚本或使用变量。您只能运行本机命令和 cmdlet。
从 PowerShell 7.2 开始,配置系统锁定时,在 NoLanguage
模式下禁用 New-Object
cmdlet。
参见
- about_Session_Configuration_Files
- about_Session_Configurations
- 上一篇:[精彩网文] 阻止你提前退休的中产阶级陷阱
- 下一篇:[玩转系统] 关于语言关键词
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag