分享好友 编程语言首页 频道列表

PowerShell中的加法运算详解

PowerShell  2015-11-08 04:310

大家已经PowerShell中的运算符有了一定感性的认识。我们首先来学习“+”运算符。PowerShell定义了“+”运算符处理数值类型、字符串类型、数组类型和哈希表类型的具体行为。在进行数值计算时,“+”和平时的数值计算规则基本一样。不过需要注意,由于计算机内部表示不同数值类型时,使用的存储空间不同,因此这些类型都只能表示一个范围内的数据。在进行数值运算的过程中,如果计算结果超过了参与计算数值类型的值域时,PowerShell将会自动进行类型转换,使用值域更大的数据类型来保存结果。例如:

PS C:\> 9 + 11
20
PS C:\> (9 + 11).GetType().FullName
System.Int32
PS C:\> [int]::MaxValue + 1
2147483648
PS C:\> ([int]::MaxValue + 1).GetType().FullName
System.Double
PS C:\> [int]::MinValue - 1
-2147483649
PS C:\> ([int]::MinValue - 1).GetType().FullName
System.Double

例子中的[int]::MaxValue表示类型int的最大值,如果再执行“+ 1”的运算,就会导致该数值超出int类型的值域,因此PowerShell自动将数据类型转换为Double类型。类似的,[int]::MinValue表示了int类型的最小值。

当对字符串类型操作数使用“+”运算符时,PowerShell将会对字符串进行连接操作,返回一个新的字符串,这种操作在C#语言中、SQL Server数据库的T-SQL语法中是一致的。例如:

PS C:\> "Hello" + " " + "world!"
Hello world!

当对数组类型操作数使用“+”运算符时,将会执行数组连接操作,返回一个新的数组,这与在C#语言中的行为一致。例如:

PS C:\> $array1 = 1,2,3
PS C:\> $array2 = 4,5
PS C:\> $array3 = $array1 + $array2
PS C:\> "$array3"
1 2 3 4 5

例子中首先定义了数组array1,它包含1、2和3这三个元素。接下来用数组array1与数组array2相加,并将返回结果存储在变量array3中。最后,输出数组中的元素到控制台。在PowerShell中,双引号中引用数组时,数组的每个元素将会被存储在变量$ofs中的字符串相互连接,并输出。(“$ofs”的默认值为空格字符)。

当对哈希表类型操作数使用“+”运算符时,PowerShell将把“+”右边的哈希表键值对添加到左边的哈希表中。如果添加的键值已经存在于左边哈希表中,PowerShell就会给出错误提示。例如:

PS C:\> $dev = @{ Tom = 1; Jerry = 2}
PS C:\> $sale = @{ Hero = 1; }
PS C:\> $dev + $sale
Name              Value
----              -----
Tom              1
Jerry             2
Hero              1

例子的开头定义了哈希表dev,它包含了研发部门的员工Tom和Jerry。接下来定义了哈希表sale,员工只有Hero一人。将dev和sale相加后得到包含这三名员工的新哈希表。如果右边哈希表中包含了与左边哈希表相同的键值对,PowerShell将会给出错误信息:

PS C:\> $manager = @{ Tom = 3 }
PS C:\> $dev + $manager
Bad argument to operator '+': 已添加项。字典中的关键字:“Tom”所添加的关键字:“Tom”.
At line:1 char:7
+ $dev + <<<< $manager

在前面的例子中,都是相同类型的对象相加。您可能正在思考,如果在“+”两边不是相同类型的对象,结果到底会是什么呢?下面是一些常见的情况:

PS C:\> 123 + '23'
146
PS C:\> 123 + '0xa'
133
PS C:\> 4 + 'test'
Cannot convert value "test" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:4
+ 4 + <<<< 'test'
PS C:\> '02' + 73
0273

PowerShell在发现“+”运算符时,将会根据左操作数的类型来决定计算的规则。在第一个表达式中123 + '23'中,123是整数,因此“+”执行数值加法运算。但是由于右操作数是字符串类型,因此PowerShell首先对该操作数进行类型转换。所以最后,我们看到结果为数值类型的值:146。第二个例子中,字符串包含了一个整数的十六进制表示形式,PowerShell将该数值正确转换成数值类型并进行计算。第三个例子中,字符串'test'是无法转换为整数类型的,因此PowerShell给出错误信息:“输入串的格式不正确”。第四个例子中,左操作数变成了包含数字的字符串,因此PowerShell执行了字符串的连接操作。

查看更多关于【PowerShell】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
PowerShell 数组的多种录入方法
这篇文章主要介绍了PowerShell 数组的多种录入方法,需要的朋友可以参考下

0评论2015-11-08103

PowerShell String对象方法小结
这篇文章主要介绍了PowerShell String对象方法,需要的朋友可以参考下

0评论2015-11-08128

PowerShell批量修改AD用户密码属性的代码
这篇文章主要介绍了PowerShell批量修改AD用户密码属性的代码,需要的朋友可以参考下

0评论2015-11-0883

PowerShell 自动备份oracle并上传到ftp
我这里有这样一个需求:有一个数据库,每天使用SQL Server Agent自动生成备份文件。然后,这个数据库非常重要,需要把每天的备份上传一个远程的FTP服务器上去。下面我们来看看如何使用Powershell来实现吧

0评论2015-11-08150

PowerShell中match命令使用详解
本文给大家介绍的是PowerShell中match命令的使用方法和具体的示例,非常的简单实用,有需要的小伙伴可以参考下

0评论2015-11-08159

Powershell实现编写和运行脚本
本文为那些对学习 Windows PowerShell 命令行和脚本编写环境感兴趣的系统管理员提供了资源。也请告诉我们本网站如何才能对您更有用处。

0评论2015-11-08349

浅谈CMD和win powershell的区别
本文给大家简单描述了一下POWERSHELL和CMD的区别,简单的说,Powershell是cmd的超集,换句话说,cmd能做的事情,Powershell都能做,但是Powershell还能额外做许多cmd不能做的活。

0评论2015-11-0874

使用PowerShell修改注册表
本文通过具体的实例给大家具体讲解了使用PowerShell操作注册表的方法,非常的简单实用,有需要的小伙伴可以参考下。

0评论2015-11-08165

PowerShell使用小技巧分享
本文给大家汇总了几个平时经常能够用到的PowerShell使用小技巧,包括修改Host文件、方法调用、查看powershell版本,有需要的小伙伴可以参考下。

0评论2015-11-08136

PowerShell时间记录脚本
这篇文章主要介绍了PowerShell时间记录脚本的相关资料,非常简单实用,需要的朋友可以参考下

0评论2015-11-0897

PowerShell管理Win Server 2008 R2
在Windows Serve 2008 R2中,一个重要改进就是PowerShell版本升级为2.0。Win 2008 R2包括一系列新的服务器管理界面,这些均建立在PowerShell 2.0之上。它新增了240个cmdlets命令集,新的PowerShell图形用户界面也增添了开发功能,从而用户能更简单创建自己的命令行。

0评论2015-11-08105

揭秘PowerShell 5.0新特性和新功能
win10已经正式发售了很多天了,那么他其中搭配的PowerShell 5.0又有什么新的变化呢,今天我们就来探询一下。

0评论2015-11-0857

PowerShell 4.0实现自动化设置服务器
PowerShell 4.0最大的变化是引入了新的Windows PowerShell期望状态配置,该机制通过集中管理执行类似功能的电脑,来控制电脑的配置方式。

0评论2015-11-0874

Powershell错误处理之what-if
这篇文章主要介绍了Powershell错误处理之what-if的相关资料,需要的朋友可以参考下

0评论2015-11-0874

更多推荐