powershell系列学习笔记二:变量

定义变量

$a=10
$b=4
$str="字符串"

定义好了变量名后,可以通过变量名来输出变量

变量也可以放在字符串中,但是这里要注意的是,单引号中的变量不会被识别和处理,在powershell中,对变量名的大小写是不敏感的,也就是说$a和$A是同一个变量。

 

赋值

通过“=”来赋值,powershell几乎可以把任何一个值赋给变量,即使是命令也可以。

 

 

 powershell也可以多个变量同时赋值

$a=$b=$c=10

 

 

 powershell交换两个变量的值,用这种格式就可以交换

 

 

 Powershell将变量的相关信息的记录存放在名为variable:的驱动中,查看所有定义的变量:

ls variable:

 

 

因为所有变量都是存在于驱动中的,验证变量是否存在:

Test-Path variable:value1

在powershell退出时,所有变量都会被自动删除,但是如果想要删除变量的话,也可以,删除变量:

del variable:value1

 

powershell自动化变量

 

 

 

 是指一打开powershell就会自动加载的变量,比如

  1. 用户信息:例如用户的根目录$home
  2. 配置信息:例如powershell控制台的大小,颜色,背景等。
  3. 运行时信息:例如一个函数由谁调用,一个脚本运行的目录等

powershell中的某些自动化变量只能读,不能写。例如:$Pid

 

 

powershell环境变量

powershell中的变量只存在于powershell内部的会话中,一旦powershell关闭,这些变量就会自生自灭。但是如果环境变量被更新了,它会继续保存在操作系统中,即使其它程序也可以调用它

读取特殊环境变量:

$env:windir
"My computer name $env:COMPUTERNAME"

 

 Powershell把所有环境变量的记录保存在env: 虚拟驱动中,因此可以列出所有环境变量 。一旦查出环境变量的名字就可以使用$env:name 访问了。查找环境变量:

ls env:

创建新的环境变量:

$env:TestVar1="This is my environment variable"

删除和更新环境变量:

del env:windir

更新环境变量就直接重新赋值就好了,其实,$env:中的环境变量只是机器环境变量的一个副本,即使你更改了它,下一次重新打开时,又会恢复如初。(.NET方法更新环境变量除外)

 

powershell驱动器变量

所有不是我们自己定义的变量都属于驱动器变量,例如环境变量。比如env:  ,驱动器上的一个”文件”,我们通过$访问它,就会返回”文件”的内容

https://www.pstips.net/powershell-drive-variables.html

 

powershell变量的作用域

Powershell支持四个作用域:全局、当前、私有和脚本。

比如在脚本中定义一个变量a,它的值是100。在powershell窗口中同样定义一个变量a,它的值为999。

在执行脚本时,会输出a=100,但是在powershell窗口中输出变量a,会输出$a=999。这就是因为作用域不同的原因。

$global
全局变量,在所有的作用域中有效,如果你在脚本或者函数中设置了全局变量,即使脚本和函数都运行结束,这个变量也任然有效。

$script
脚本变量,只会在脚本内部有效,包括脚本中的函数,一旦脚本运行结束,这个变量就会被回收。

$private
私有变量,只会在当前作用域有效,不能贯穿到其他作用域。

$local
默认变量,可以省略修饰符,在当前作用域有效,其它作用域只对它有只读权限。

控制台中的变量能被函数、脚本访问读取到,但是不能更改

使用private可以使变量不被访问到

 

 对于$private限制的变量不能在函数中通过$global修改,不但不能修改,还会删除当前的$private变量

https://www.pstips.net/powershell-scope-of-variables.html

 

变量的类型和强类型

 Powershell会给数据分配一个最佳的数据类型;如果一个整数超出了32位整数的上限([int32]::MaxValue),它就会分配一个64位整数的数据类型;如果碰到小数,会分配一个Double类型;如果是文本,Powershell会分配一个String类型;如果是日期或者时间,会被存储为一个Datetime对象。这种类型自适应称作“弱类型”

https://www.pstips.net/powershell-variable-strongly-typing.html

指定类型变量

 

 强类型的使用也是十分丰富的

PS> $date.DayOfWeek
Thursday
PS> $date.DayOfYear
355
PS> $date.AddDays(-10)

2012年12月10日 12:45:00

 

变量的幕后管理

创建一个变量后,会生成一个PSVariable对象,这个对象不仅存储了变量的值,还存储了变量的其他信息,比如描述($var.Description)等

https://www.pstips.net/powershell-variable-management-behind-the-scenes.html

查看这个PSVariable对象

Get-Variable var | fl *
或者
$var | fl *

 

posted @ 2020-08-06 16:32  xiaoxiaosen  阅读(731)  评论(0编辑  收藏  举报