[玩转系统] 关于变量
作者:精品下载站 日期:2024-12-14 02:17:27 浏览:12 分类:玩电脑
关于变量
简短描述
描述变量如何存储可在 PowerShell 中使用的值。
详细描述
您可以在 PowerShell 变量中存储所有类型的值。例如,存储命令的结果,以及存储命令和表达式中使用的元素,例如名称、路径、设置和值。
变量是存储值的内存单元。在 PowerShell 中,变量由以美元符号 ($
) 开头的文本字符串表示,例如 $a
、$process
或 $my_var。
变量名称不区分大小写,并且可以包含空格和特殊字符。但是,包含特殊字符和空格的变量名很难使用,应该避免。有关详细信息,请参阅包含特殊字符的变量名称。
PowerShell 中有多种不同类型的变量。
-
用户创建的变量:用户创建的变量由用户创建和维护。默认情况下,您在 PowerShell 命令行中创建的变量仅在 PowerShell 窗口打开时存在。当 PowerShell 窗口关闭时,变量将被删除。要保存变量,请将其添加到您的 PowerShell 配置文件中。您还可以在具有全局、脚本或本地范围的脚本中创建变量。
自动变量:自动变量存储PowerShell的状态。这些变量由 PowerShell 创建,PowerShell 根据需要更改它们的值以保持其准确性。用户无法更改这些变量的值。例如,
$PSHOME
变量存储 PowerShell 安装目录的路径。有关自动变量的详细信息、列表和说明,请参阅 about_Automatic_Variables。
首选项变量:首选项变量存储 PowerShell 的用户首选项。这些变量由 PowerShell 创建并填充有默认值。用户可以更改这些变量的值。例如,
$MaximumHistoryCount
变量确定会话历史记录中的最大条目数。有关首选项变量的详细信息、列表和说明,请参阅 about_Preference_Variables。
使用变量
要创建新变量,请使用赋值语句为该变量赋值。在使用变量之前不必声明它。所有变量的默认值为$null
。
要获取 PowerShell 会话中所有变量的列表,请输入 Get-Variable
。显示的变量名称前面不带用于引用变量的美元 ($
) 符号。
例如:
$MyVariable = 1, 2, 3
$Path = "C:\Windows\System32"
变量对于存储命令的结果很有用。
例如:
$Processes = Get-Process
$Today = (Get-Date).DateTime
要显示变量的值,请键入变量名称,前面加上美元符号 ($
)。
例如:
$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46
要更改变量的值,请为该变量分配新值。
以下示例显示 $MyVariable
变量的值、更改该变量的值,然后显示新值。
$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.
要删除变量的值,请使用 Clear-Variable
cmdlet 或将该值更改为 $null
。
Clear-Variable -Name MyVariable
$MyVariable = $null
要删除变量,请使用Remove-Variable 或Remove-Item。
Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable
也可以使用一条语句为多个变量赋值。以下示例将相同的值分配给多个变量:
$a = $b = $c = 0
下一个示例将多个值分配给多个变量。
$i,$j,$k = 10, "red", $true # $i is 10, $j is "red", $k is True
$i,$j = 10, "red", $true # $i is 10, $j is [object[]], Length 2
有关更多详细信息,请参阅 about_Assignment_Operators 的分配多个变量部分。
变量类型
您可以在变量中存储任何类型的对象,包括整数、字符串、数组和哈希表。并且,代表进程、服务、事件日志和计算机的对象。
PowerShell 变量是松散类型的,这意味着它们不限于特定类型的对象。单个变量甚至可以同时包含不同类型对象的集合或数组。
变量的数据类型由变量值的 .NET 类型决定。要查看变量的对象类型,请使用 Get-Member。
例如:
$a = 12 # System.Int32
$a = "Word" # System.String
$a = 12, "Word" # array of System.Int32, System.String
$a = Get-ChildItem C:\Windows # FileInfo and DirectoryInfo types
您可以使用类型属性和强制转换表示法来确保变量只能包含特定的对象类型或可以转换为该类型的对象。如果您尝试分配其他类型的值,PowerShell 会尝试将该值转换为其类型。如果类型无法转换,则赋值语句失败。
要使用强制转换表示法,请在变量名称之前(在赋值语句的左侧)输入类型名称,并将其括在方括号中。以下示例创建一个仅包含整数的 $number
变量、一个仅包含字符串的 $words
变量以及一个 $dates
变量只能包含 DateTime 对象。
[int]$number = 8
$number = "12345" # The string is converted to an integer.
$number = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string
was not in a correct format."
At line:1 char:1
+ $number = "Hello"
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [],
ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
[string]$words = "Hello"
$words = 2 # The integer is converted to a string.
$words += 10 # The plus (+) sign concatenates the strings.
$words
210
[datetime] $dates = "09/12/91" # The string is converted to a DateTime object.
$dates
Thursday, September 12, 1991 00:00:00
$dates = 10 # The integer is converted to a DateTime object.
$dates
Monday, January 1, 0001 00:00:00
在命令和表达式中使用变量
要在命令或表达式中使用变量,请键入变量名称,前面加上美元 ($
) 符号。
如果变量名称和美元符号未用引号引起来,或者如果它们用双引号 ("
) 引起,则在命令或表达式中使用变量的值。
如果变量名称和美元符号括在单引号 ('
) 中,则在表达式中使用该变量名称。
有关在 PowerShell 中使用引号的更多信息,请参阅 about_Quoting_Rules。
此示例获取 $PROFILE
变量的值,该变量是 PowerShell 控制台中 PowerShell 用户配置文件的路径。
$PROFILE
C:\Users\User01\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
在此示例中,显示了两个可以在 notepad.exe 中打开 PowerShell 配置文件的命令。带双引号 ("
) 标记的示例使用变量的值。
notepad $PROFILE
notepad "$PROFILE"
以下示例使用单引号 ('
) 标记将变量视为文字文本。
'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.
包含特殊字符的变量名
变量名称以美元 ($
) 符号开头,可以包含字母数字字符和特殊字符。变量名长度仅受可用内存的限制。
最佳实践是变量名称仅包含字母数字字符和下划线 (_
) 字符。包含空格和其他特殊字符的变量名称很难使用,应避免使用。
字母数字变量名称可以包含以下字符:
- 以下类别的 Unicode 字符:
Lu
、Ll
、Lt
、Lm
、Lo
,或Nd
。 - 下划线 (
_
) 字符。 - 问号 (
?
) 字符。
以下列表包含 Unicode 类别描述。有关详细信息,请参阅 Unicode 类别。
Lu大写字母
Ll小写字母
Lt标题字母
Lm修饰字母
Lo其他信件
Nd十进制数字
要创建或显示包含空格或特殊字符的变量名称,请用大括号 ({}
) 字符将变量名称括起来。大括号指示 PowerShell 将变量名称的字符解释为文字。
特殊字符变量名称可以包含以下字符:
任何 Unicode 字符,但以下情况除外:
- 右花括号
}
字符 (U+007D)。
- 右花括号
- 反引号 (
`
) 字符 (U+0060)。反引号用于转义 Unicode 字符,以便将它们视为文字。
PowerShell 保留了包含字母数字和 $$
、$?
、$^
和 $_
特殊字符。有关详细信息,请参阅 about_Automatic_Variables。
例如,以下命令创建名为 save-items
的变量。需要大括号 ({}
),因为变量名称包含连字符 (-
) 特殊字符。
${save-items} = "a", "b", "c"
${save-items}
a
b
c
以下命令获取由 ProgramFiles(x86)
环境变量表示的目录中的子项。
Get-ChildItem ${env:ProgramFiles(x86)}
要引用包含大括号的变量名称,请将变量名称括在大括号中,并使用反引号字符转义大括号。例如,要创建名为 this{value}is
的变量,请输入:
${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.
变量和范围
默认情况下,变量仅在创建它们的范围内可用。
例如,您在函数中创建的变量仅在该函数内可用。您在脚本中创建的变量仅在脚本内可用。如果对脚本进行点源,变量将添加到当前作用域。有关详细信息,请参阅 about_Scopes。
您可以使用范围修饰符来更改变量的默认范围。以下表达式创建一个名为 Computers
的变量。该变量具有全局作用域,即使它是在脚本或函数中创建的。
$Global:Computers = "Server01"
对于在会话外执行的任何脚本或命令,您需要 Using
作用域修饰符来嵌入调用会话作用域中的变量值,以便会话外代码可以访问它们。
有关详细信息,请参阅 about_Remote_Variables。
保存变量
您创建的变量仅在您创建它们的会话中可用。当您关闭会话时,它们就会丢失。
要在您启动的每个 PowerShell 会话中创建变量,请将该变量添加到您的 PowerShell 配置文件中。
例如,要更改每个 PowerShell 会话中的 $VerbosePreference
变量的值,请将以下命令添加到您的 PowerShell 配置文件中。
$VerbosePreference = "Continue"
您可以通过在文本编辑器(例如 notepad.exe)中打开 $PROFILE
文件来将此命令添加到您的 PowerShell 配置文件中。有关 PowerShell 配置文件的更多信息,请参阅 about_Profiles。
变量:驱动
PowerShell 变量提供程序创建一个 Variable:
驱动器,其外观和行为类似于文件系统驱动器,但它包含会话中的变量及其值。
要更改为 Variable:
驱动器,请使用以下命令:
Set-Location Variable:
要列出 Variable:
驱动器中的项目和变量,请使用 Get-Item
或 Get-ChildItem
cmdlet。
Get-ChildItem Variable:
要获取特定变量的值,请使用文件系统表示法指定驱动器名称和变量名称。例如,要获取 $PSCulture
自动变量,请使用以下命令。
Get-Item Variable:\PSCulture
Name Value
---- -----
PSCulture en-US
要显示有关 Variable:
驱动器和 PowerShell 变量提供程序的更多信息,请键入:
Get-Help Variable
具有提供程序路径的变量语法
您可以使用美元 ($
) 符号为提供程序路径添加前缀,并访问实现 IContentCmdletProvider 接口的任何提供程序的内容。
以下内置 PowerShell 提供程序支持此表示法:
- about_Environment_Provider
- about_Variable_Provider
- about_Function_Provider
- about_Alias_Provider
变量 cmdlet
PowerShell 包含一组旨在管理变量的 cmdlet。
要列出 cmdlet,请键入:
Get-Command -Noun Variable
要获取特定 cmdlet 的帮助,请键入:
Get-Help <cmdlet-name>
Clear-Variable
删除变量的值。
Get-Variable
获取当前控制台中的变量。
New-Variable
创建一个新变量。
Remove-Variable
删除变量及其值。
Set-Variable
更改变量的值。
参见
- about_Automatic_Variables
- about_Environment_Variables
- about_Preference_Variables
- about_个人资料
- about_引用_规则
- about_Remote_Variables
- about_范围
- 上一篇:[精彩网文] 2024年财富新定义
- 下一篇:[玩转系统] 关于使用
猜你还喜欢
- 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