(10)Powershell赋值运算符(一)

    上一节介绍了Powershell中的内置变量,细节使劲戳这里
shell


    本节介绍Powershell中的赋值运算符,赋值运算符可向一个变量赋予一个或多个值。赋值运算符能够在赋值以前对值执行数值运算。数组

    

    Powershell支持如下赋值运算符。
app

运算符 说明 备注
= 将变量的值设置为指定值。
+= 使变量的值增长指定值,或将指定值追加到现有值。
-= 使变量的值减小指定值。
*= 将变量的值与指定值相乘,或将指定值追加到现有值。 第二个操做数必须是数字,详细内容参考Powershell赋值运算符(二)
/= 将变量的值除以指定值。 两个操做数都必须是数字,详细内容参考Powershell赋值运算符(二)
%=
将变量的值除以指定值,而后将余数(模)赋予变量。 两个操做数都必须是数字,详细内容参考Powershell赋值运算符(二)
++ 使变量、可赋值属性或数组元素的值增长 1。 一元运算符,有前缀和后缀的形式,而且可赋值表达式必须是数字或是能够转换为数字。
--
使变量、可赋值属性或数组元素的值减小 1。 一元运算符,有前缀和后缀的形式,而且可赋值表达式必须是数字或是能够转换为数字。

    


  1. 赋值运算符的语法ide

    赋值运算符的语法以下:
spa

    <可赋值表达式><赋值运算符(上表格列出的内容)><值>,
对象

可赋值表达式包括变量和属性,值能够是单个值,值数组,也能够是命令,表达式或是语句,例如blog

PS C:\> $a=1
PS C:\> $pro=Get-Process
PS C:\> $a="apple","orange","lemon","grape"

2. 赋值运算符(=)排序

    变量是存储值的内存空间,使用赋值运算符能够将值存储在变量中,新值能够替换变量的现有值,也能够将值追加到现有值。例如如下语句将字符串"Powershell"赋值给变量$myStr
索引

PS C:\> $myStr="Powershell"

    PowerShell 中向变量赋值时,若是该变量不存在,则会建立该变量。例如,下面两条赋值语句中的第一条建立 $a 变量并将值 1 赋予 $a。第二条赋值语句将值 3 赋予 $a。第一条语句建立一个新变量。第二条语句只更改该变量的值:three

PS C:\> $a=1
PS C:\> $a=3

    PowerShell 中的变量没有特定数据类型,除非进行转换。若是变量仅包含一个对象,则变量采用该对象的数据类型。若是变量包含对象集合,则变量为 System.Object 数据类型。所以,能够向该集合赋予任何类型的对象。例以下面的语句能够向变量添加进程对象、服务对象、字符串和整数,而不会生成错误:

PS C:\> $a=Get-Process
PS C:\> $a+=Get-Service
PS C:\> $a+="my string"
PS C:\> $a+=13

    赋值运算符 (=) 的优先级低于管道运算符 (|),因此在将命令管道的结果赋予变量时不须要圆括号。例如,下面的命令对计算机上的进程进行排序,而后将排序后的进程赋予 $a 变量:

PS C:\> $a=Get-Process | Sort-Object -Property name

    还能够将语句建立的值赋予变量,以下面的语句所示

PS C:\> $a=if($b -lt 0) { 0 } else { $b }

    -lt 是 less then 的缩写,至关于高级语言中的<=,会在Powershell的比较运算符中讲到。上面语句的意思是若是$b 的值小于 0 时将 0 赋予 $a 变量。若是 $b 的值不小于零,则将 $b 的值赋予 $a。

    若是要将哈希表赋予变量,请使用 PowerShell 中的标准哈希表表示法。一个 at 符号 (@),在其后键入使用分号 (;) 分隔、括在大括号 ({ }) 内的键/值对。例如,下面的语句将哈希表赋予 $a 变量:

PS C:\> $a=@{one=1; two=2;three=3}

    若是要将十六进制值赋予变量,请在值前面加上"0x"。PowerShell 会将十六进制值 (0x10) 转换为十进制值(本例中为 16),而后将该值赋予 $a 变量。例如,如下语句将值 0x10 赋予变量 $a:

PS C:\> $a=0x10
PS C:\> $a
16

    若是要将指数值赋予变量,须要输入根数字、字母"e"和一个表示 10 的倍数的数字。例如,若要将 3.1415 的 100 次幂值赋予 $a 变量,请输入:

PS C:\> $a=3.1415e2
PS C:\> $a
314.15

    PowerShell 中还能够将千字节 (KB)、兆字节 (MB) 和千兆字节 (GB) 转换为字节。例如,如要将值 10 千字节赋予 $a 变量,请输入:

PS C:\> $a=10kb

3. 加法赋值运算符(+=)

   加法赋值运算符 (+=) 可增长变量的值或将指定值追加到现有值。具体操做取决于变量是数字仍是字符串类型,以及变量是包含单个值(标量)仍是多个值(集合)。+=运算符组合了两个运算。首先执行加法,而后赋值。所以,如下语句是等效的。    

PS C:\> $a+=2
PS C:\> $a=($a+2)

    若是变量包含单个数字值,则 += 运算符使现有值增长该运算符右侧的数量。将运算符将获得的值赋予变量。例如:

PS C:\> $a=5
PS C:\> $a+=3
PS C:\> $a
8

    若是变量的值是字符串,则将该运算符右侧的值追加到该字符串,以下所示:

PS C:\> $a="Windows"
PS C:\> $a+=" Powershell"
PS C:\> $a
Windows Powershell

    若是变量的值是数组,则 += 运算符将其右侧的值追加到数组。除非经过转换显式指定数组的类型,不然能够将任何类型的值追加到数组,以下所示:

PS C:\> $a=1,2,3
PS C:\> $a+=4
PS C:\> $a
1
2
3
4
PS C:\> $a+="string"
PS C:\> $a
1
2
3
4
string

    若是变量的值是哈希表,则 += 运算符将其右侧的值追加到该哈希表。不过,由于只能向哈希表添加另外一个哈希表,因此全部其余赋值都会失败

例如,下面的命令将哈希表赋予 $a 变量。而后,该命令使用 += 运算符将另外一个哈希表追加到现有哈希表,其实是将一个新键/值对添加到现有哈希表。此命令成功,输出以下所示:

PS C:\> $a=@{a=1;b=2;c=3}
PS C:\> $a+=@{four="4"}
PS C:\> $a

Name                           Value
----                           -----
a                              1
b                              2
four                           4
c                              3

    下面的命令试图将一个整数 (1) 追加到 $a 变量中的哈希表。此命令将失败:

PS C:\> $a=@{a=1; b=2; c=3}
PS C:\> $a+1
只能向哈希表添加另外一个哈希表。
所在位置 行:1 字符: 4
+ $a+ <<<< 1
    + CategoryInfo          : InvalidOperation: (1:Int32) [], RuntimeException
    + FullyQualifiedErrorId : AddHashTableToNonHashTable

4. 减法赋值运算符 (-=)

    减法赋值运算符 (-=) 使变量的值减小在该运算符右侧指定的值。此运算符不能用于字符串变量,也不能用于从集合中删除元素。-= 运算符组合了两个运算。首先执行减法,而后赋值。所以,如下语句是等效的:    

PS C:\> $a-=2
PS C:\> $a=($a-2)

    如下语句使用 -= 运算符减小变量的值:

PS C:\> $a=9
PS C:\> $a-=4
PS C:\> $a
5

    还可使用 -= 赋值运算符减小数值数组的成员的值。请指定要更改的数组元素的索引。在下面的示例中,数组中第三个元素(元素 2)的值减小 1:

PS C:\> $a=1,3,5
PS C:\> $a[1]-=1
PS C:\> $a
1
2
5

    不能使用 -= 运算符删除变量的值。要删除赋予变量的全部值,请使用 Clear-Item 或 Clear-Variable cmdlet 将值 $null 或 "" 赋予变量。

PS C:\> $a=8
PS C:\> $a=$null
PS C:\> $a

    要从数组中删除特定值,请使用数组表示法将值 $null 赋予该特定项。例如,下面的语句从数组中删除第二个值(索引位置 1):

PS C:\> $a=1,2,4
PS C:\> $a
1
2
4
PS C:\> $a[1]=$null
PS C:\> $a
1
4

    要删除变量,请使用 Remove-Variable cmdlet。在变量已显式转换为特定数据类型,而您须要非类型化变量时,可使用此方法。下面的命令删除 $a 变量:

PS C:\> $a=5
PS C:\> Remove-Variable a
PS C:\> $a

    须要注意的是,使用Remove-Variable命令时,使用的命令名称,变量以前没有美圆符号($)。

相关文章
相关标签/搜索