首页 > 系统相关 >(8)Powershell中变量的定义和使用

(8)Powershell中变量的定义和使用

时间:2024-01-21 13:34:05浏览次数:20  
标签:PS 定义 WINDOWS system32 myStr Powershell 变量

(8)Powershell中变量的定义和使用

这一节主要介绍Powershell中变量的定义和使用,以及使用变量时应该注意的事项。


和所有编程语言中的变量一样,Powershell中的变量也是存于存储值的内存单元,需要注意的是,Powershell中的变量是以美元符号($)开头的单字节(一般是英文字符,虽然ISE中支持双字节的字符,但是像任何编程语言,我们不鼓励不赞成使用中文等命名的变量)文本字符串表示,如 $a, $b 或者是 $my_str。

在Powershell中有3种不同的变量。

  • 用户自己创建的变量

    用户创建的变量由用户创建和维护。默认情况下,在 PowerShell 命令行中创建的变量只在当前PowerShell 窗口有效。关闭该窗口后,变量也会自动销毁(再次打开命令窗口不再存在,不能再引用之前定义的变量)。若要保存变量并使其在窗口关闭并再次打开时仍然有效,需要将其添加到 PowerShell 配置文件中(但并不建议这么做)。如果是在编写脚本,则可以在脚本中创建具有全局或局部作用域的变量。

  • 自动变量

    自动变量也称为内置变量,用于存储 PowerShell 的一些状态信息。这些变量由 PowerShell 创建和维护,PowerShell 根据需要更改变量值以保持其准确性。用户不能更改这些变量的值。例如,$PSHome 变量存储 PowerShell 安装目录的路径。

  • 首选项变量

    首选项变量就是Powershell当前命令窗口环境的首选项设置,这些变量由Powershell创建,并以默认值填充,用户可以更改这些变量的值,如 $MaximumHistoryCount 是历史记录的最大条数。

变量的定义和使用

创建(定义)新变量或更改变量的值,请使用以下格式的赋值语句

 $<variable> = <value>

例如以下定义了字符串变量 $myStr 并修改了其值。如果要显示变量的值,直接输入变量的名称,包括美元符号$。

PS C:\WINDOWS\system32> $myStr="This variables defined by user"

PS C:\WINDOWS\system32> $myStr
This variables defined by user

PS C:\WINDOWS\system32> $myStr="user has changed the value of this variables"

PS C:\WINDOWS\system32> $myStr
user has changed the value of this variables

在定义和使用变量时,可以使用单引号和双引号,但需要注意单引号和双引号的区别。

PS C:\WINDOWS\system32> $myStr='this is string variables'

PS C:\WINDOWS\system32> $youStr='your want to display the $myStr'

PS C:\WINDOWS\system32> $youStr
your want to display the $myStr

注意上面的变量定义使用的单引号,变量 $youStr 中的变量 $myStr 并没有替换为其所代表的值,而是直接输出,意味单引号中的内容会直接输出,不做变量值的替换。


PS C:\WINDOWS\system32> $myStr="this is string variables"

PS C:\WINDOWS\system32> $youStr="your want to display the $myStr"

PS C:\WINDOWS\system32> $youStr
your want to display the this is string variables

注意上边的变量的定义使用的双引号,变量$youStr 中的变量 $myStr 会替换为其所代表的值,意味着双引号中的变量名在会替换为变量所代表的值。


如果需要在双引号表示的变量中输出变量名,即 $youStr="your want to display the $myStr" 你不想让变量 $youStr 中的 $myStr 发生替换,则需要在变量名之前添加英文符号倒引号"`"进行转义,在英文输入状态下,这个键位于"Esc"键的下面,注意下面命令的输出内容。

PS C:\WINDOWS\system32> $myStr="this is string variables"

PS C:\WINDOWS\system32> $youStr="your want to display the `$myStr"

PS C:\WINDOWS\system32> $youStr
your want to display the $myStr


变量的保存

用户创建的变量只在当前会话中可用,关闭会话(当前命令窗口)变量将丢失。如果需要保存变量,就需要将其保存在配置文件中,配置文件中的变量将在命令窗口打开时自动加载,将会添加所有的会话中。

可以在命令行输入 $profile 来查看配置文件的路径。

例如,如果需要修改 $VerbosePreference 变量的值为 "Continue" (默认是"SilentlyContinue"),可以再命令行输入 $profile 找到配置文件的路径,通过Notepad等文本编辑器进行修改,或是利用 Add-Content 进行修改。


包含特殊字符的变量名称

如果变量中包含特殊字符,可以使用大括号{} 强制Powershell按字面解释变量名称,如果要定义或是引用包含特殊字符(如短划线,句点,冒号,圆括号)的变量,这会非常有用。

PS C:\WINDOWS\system32> ${this is string array}="a","b","c"

PS C:\WINDOWS\system32> ${this is string array}
a
b
c

以上命令定义了的变量名是 ${this is string array}。

如要引用的变量名称包含圆括号,用大括号将变量名称括起来

PS C:\WINDOWS\system32> Get-ChildItem ${env:ProgramFiles(x86)}


    Directory: C:\Program Files (x86)


Mode                 LastWriteTime         Length Name                                                                                                                                                                                                           
----                 -------------         ------ ----                                                                                                                                                                                                           
d-----        2021/12/10     18:20                Accenture                                                                                                                                                                                                      
d-----         2023/8/24     21:05                Avecto                                                                                                                                                                                                         
d-----          2022/4/7     17:41                Blueberry Software                                                                                                                                                                                             
d-----          2023/8/8      9:38                Cisco                                                                                                                                                                                                          
d-----         2023/8/14     16:25                Common Files                                                                                                                                                                                                   
d-----         2024/1/18     19:48                Google                                                                                                                                                                                                         
d-----        2023/11/18      7:33                Internet Explorer                                                                                                                                                                                              
d-----        2023/10/24      9:02                LogMeIn Rescue Applet                                                                                                                                                                                          
d-----        2021/12/13      8:53                Mersive Technologies, Inc                                                                                                                                                                                      
d-----          2022/6/8      4:42                Microsoft                                                                                                                                                                                                      
d-----         2022/3/24     20:23                Microsoft Azure Information Protection                                                                                                                                                                         
d-----         2023/12/3     12:44                Microsoft Intune Management Extension        

如果要引用变量名称包含大括号,用大括号将变量名称括起来,变量内部的大括号之前添加倒引号"`"字符转义大括号,倒引号是在引文输入状态下,键盘上"Esc"下面的按键,这个类似于上文讲到的如果在双引号中不想对变量名称替换为值时添加的倒引号。

PS C:\WINDOWS\system32> ${this`{value`}is} = 1

PS C:\WINDOWS\system32> ${this`{value`}is}
1

总结

关于变量,需要注意的是,Powershell中的变量可以使用特殊字符,另外Powershell中的变量可以存储任何类型的对象,整数,字符串,数组,哈希表,服务,进程,事件日志等,即可以将任何一条命令的执行结果赋值给一个变量。最后,在定义变量时,不能定义与内置变量名称一样的变量,因为内置变量是只读,不允许用户更改,会在Powershell的内置变量中讲到Powershell中都包含哪些内置变量。

标签:PS,定义,WINDOWS,system32,myStr,Powershell,变量
From: https://www.cnblogs.com/zhang-snail/p/17973222

相关文章

  • (14)Powershell中的逻辑运算符
    (14)Powershell中的逻辑运算符上一节介绍了Powershell中的比较运算符,以及如何使用Powershell中的位运算来操作文件的属性,想写内容参考HERE。这一节介绍Powershell中的逻辑运算符。逻辑运算符可以连接表达式和语句,返回值为TRUE或者FALSE,以此来构成条件为真或为假的bool(TR......
  • (13)Powershell中的比较运算符与位运算符
    (13)Powershell中的比较运算符与位运算符上一节介绍了Powershell中变量的类型,详细内容使劲戳这里。本节介绍Powershell中的比较运算符。使用比较运算符,可以指定用于比较值,也可以查找与指定模式匹配的值。如果要使用比较运算符,需要同时指定要进行比较的值以及分隔这些值的运算......
  • 自定义排序
    问题:如何对数据进行自定义排序函数解决:=SORTBY(A2:A21,MATCH(A2:A21,E2:E11,))按自定义序列排序:选取数据中任一单元格》数据(或开始)》排序》自定义排序》勾选包含标题》次序》自定义序列》选取》确定》确定设置自定义序列:选取数据》文件》选项》自定义序列》从单元格导......
  • Shell笔记:变量基础使用
    语法:为my_var="hello",此处定义了一个值为字符串的变量,需要特别注意的是,等号=两边不能有空格。变量的命名只能使用英文字母,数字和下划线,且首个字符不能以数字开头。变量定义之后也可以在其他地方使用同样的语法给它重新赋值,但是注意,不可以使用$my_var="hi"这种语法,加花括号是......
  • (powershell 7) 安装及 Pycharm 上的配置
    1.windows上更新powershell下载地址(此处需要爬下墙): https://github.com/PowerShell/PowerShell选择一个LTS版本直接手动安装,完成完成后,会自动添加到PATH中,如果没有,可以手动配置#打开powershell$PSVersionTable.PSVersion 2.Pycharm配置powershell Note......
  • 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)
    解析自定义标签(XML文件)上一篇《BeanDefinition的解析阶段(XML文件)》文章分析了Spring处理 org.w3c.dom.Document 对象(XMLDocument)的过程,会解析里面的元素。默认命名空间(为空或者 http://www.springframework.org/schema/beans)的元素,例如 <bean/> 标签会被解析成Generic......
  • YaKlang语言之变量类型
    Yaklang的类型其实非常简单,我们仅需要记住如下类型即可string字符串类型,用以快速构建一个字符串int整数类型:在64位机中,int和int64是一样的float浮点类型,用来定义和表示浮点数byte本质上等同于uint8undefined/nil为定义的值,我们可以理解为空值bool只有true......
  • (12)Powershell中变量的类型
    (12)Powershell中变量的类型WindowPowershell中变量的类型与Java,C#等高级语言中变量的类型不一样,可以不用显示指定Powershell中变量的类型,即Powershell中的变量具有更大的灵活性。Powershell中的变量采用.NetFramework类型。默认情况下,当变量只有一个值时,变量的数据类型由赋......
  • 线程同步之条件变量
    目录condition_variable简介成员函数实现线程间的通信condition_variable简介std::condition_variable是C++中用于线程同步的一个类。它通常与std::mutex一起使用,用于在一个或多个线程中阻塞,直到另一个线程修改了共享变量并通知了condition_variable。下面是一个例子,演示了如何......
  • (11)Powershell赋值运算符(二)
    (11)Powershell赋值运算符(二)上一节介绍了Powershell赋值运算符中的=,+=,-=,详细内容参考这里。本节介绍Powershell赋值运算符中的*=,/=,%=,++,--。1.乘法赋值运算符(*=)乘法赋值运算符(*=)对数字值执行乘法或追加指定数目的变量字符串值副本。如果变量是单个......