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

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

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

Powershell支持以下赋值运算符。

运算符 说明 备注
= 将变量的值设置为指定值。
+= 使变量的值增加指定值,或将指定值追加到现有值。
-= 使变量的值减少指定值。
*= 将变量的值与指定值相乘,或将指定值追加到现有值。
/= 将变量的值除以指定值。
%= 将变量的值除以指定值,然后将余数(模)赋予变量。
++ 使变量、可赋值属性或数组元素的值增加 1。 一元运算符,有前缀和后缀的形式,并且可赋值表达式必须是数字或是可以转换为数字。
-- 使变量、可赋值属性或数组元素的值减少 1。 一元运算符,有前缀和后缀的形式,并且可赋值表达式必须是数字或是可以转换为数字。

  1. 赋值运算符的语法

赋值运算符的语法如下:

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

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

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。第一条语句创建一个新变量。第二条语句只更改该变量的值:

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:\> [email protected]{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:\> [email protected]{a=1;b=2;c=3}
PS C:\> [email protected]{four="4"}
PS C:\> $a

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

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

PS C:\> [email protected]{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命令时,使用的命令名称,变量之前没有美元符号($)。

时间: 2025-01-15 06:47:08

(10)Powershell赋值运算符(一)的相关文章

Windows 10 powershell 中文乱码解决方案

Windows 10 powershell 中文乱码解决方案 Intro 我装的系统是英文版的 win 10 操作系统,最近使用命令行测试接口,发现中文显示一直异常, 使用网上的各种解决方案都没有效果,update 注册表,设置 codepage 为 utf8(65001) 都没什么卵用. 后来发现另外一台机器上是正常的(中文操作系统),chcp 查看使用的 codepage 是 936,网上查询之后 936 对应的是 简体中文,于是配置在 powershell 命令行启动的时候配置 codep

读书笔记 effective c++ Item 10 让赋值运算符返回指向*this的引用

一个关于赋值的有趣的事情是你可以将它们链在一起: 1 int x, y, z; 2 3 x = y = z = 15; // chain of assignments 同样有趣的是赋值采用右结合律,所以上面的赋值链被解析成下面这个样子: 1 x = (y = (z = 15)); 在这里,15被赋值给z,然后赋值的结果(更新的z)被赋值给y,再然后赋值的结果(更新的Y)被赋值给x. 实现这个赋值链的方法是使赋值返回指向左边参数的引用,这也是你在为你的类实现赋值运算符的时候应该遵守的约定: 1 c

Item 10:赋值运算符要返回自己的引用 Effective C++笔记

Item 10:Have assignment operators return a reference to *this. 这是关于赋值运算符的编程惯例,用来支持链式的赋值语句: int x, y, z; ... x = y = z = 1; 在C++中,它相当于: x = ( y = ( z = 1 ) ); 这是因为=运算符是右结合的,链式赋值时会从右向左运算.链式写法的赋值已经成为了惯例, 所以我们自定义的对象最好也能支持链式的赋值,这需要重载=运算符时返回当前对象的引用: class

A2第10节赋值运算符和实现加法计算器

第二章第10节1.左边只能有一个变量,而且左边必须是变量2.计算器WinForm 1,拖控件(一个button .两个label.两个textbox) 2,对button双击写事件 3,result 4,获得输入的文本信息 5,选中button按钮,切换到闪电标志选中click 6,对click事件写方法 7, { string s1=txtNum1.Text; string s2=txtNum2.Text; string s=s1+s2; labelResult.Text=s; } 8,将输入

PowerShell runspace 的创建,使用和查错

今天拜读了The Scripting Guy关于runspace的几篇大作,温故而知新,一些忽略的地方更为清楚. https://blogs.technet.microsoft.com/heyscriptingguy/2015/11/26/beginning-use-of-powershell-runspaces-part-1/ runspace这两年在PowerShell使用的频率越来越高,由于他的高效率,基本上很多时候已经取代了传统的Job后台操作.不管是多线程实现,或者是后台操作,亦或是入

PowerShell随笔2_分支 选择 循环

PowerShell特殊变量: PowerShell的特殊变量由系统自动创建.用户自定义的变量名称应该不和特殊变量相同. $^ :前一命令行的第一个标记 $$ :前一命令行的最后一个标记 $_ :表示表示当前循环的迭代变量. $? :前一命令执行状态,成功(Ture) 或者 失败(False) $Args :为脚本或者函数指定的参数 $Error :错误发生时,错误对象存储于变量 $Error 中 $Foreach :引用foreach循环中的枚举器 $Home :用户的主目录 $Host :引

如鹏网.Net基础1 第二章:C#语言基础1

------------------------------------------------ 重点提示: 1.基本数据类型的区别:char.byte.short.int.long:float.double: 2.CTS是什么?String和string的区别: 3.枚举类型: 4.自增自减: 5.如何交换两个变量: 6.赋值表达式的值:Console.WriteLine(a=b+1);赋值表达式也有值,它的值就是复制之后左边的值: 7.三元运算符:String s=(i==5?"你好&quo

C语言 优先级

过年越来越无聊了,贴完对联后无所事事的看了一下以前的C语言.关于优先级的问题有一些想要写下来的东西. 当我学习优先级的时候,记得我们的老师帅哥说:以后你们面试,如果有面试官问你们一些关于优先级的计算.如果你有胆量,可以把你手中的东西摔到他的脸上,吃饱撑着了才会这么用优先级.可能我就是那个胆子比较小的....然后我还查阅了不少的类似的题,因为当时刚刚学习C语言,真的觉得这种题好厉害,好流弊! 我分两种看法来解决这个问题: 1.懒人,喜欢简单,爱好和平的方法. 比如!a&&b,我就不知道到底是

14.PowerShell--抛出异常,错误处理

PowerShell – 错误处理 1.  What-if 参数 (试运行,模拟操作) 简介:PowerShell 不会执行任何对系统有影响的操作,只会告诉你如果没有模拟运行,可能产生什么影响和后果. 实例: PS C:\>Stop-Process  -name calc -whatif What if: Performing theoperation "Stop-Process" on target "calc (119000)". 2.  -confirm