PowerShell 学习(一):运算符

PowerShell 学习(一):运算符

 

一、算术运算符:

运算符说明示例结果
+将整数相加;
连接字符串、数组和哈希表。
连接哈希表时不能有相同的key
1+1
"abc”+"def”
"abc”+123
"a”,"b”+"c”
"a”,"b”+1
"a”,"b"+1,2
"a”,"b”+"c”,"d”
@{a=1;b=2}+@{c=”cc”;d=”dd”}
"a”,"b",”c”+@{a=”aa”;b=”bb”}
2
abcdef
abc123
a,b,c
a,b,1
a,b,1,2
a,b,c,d
@{a=1;b=2;c=”cc”;d=”dd”}
a,b,c,@{a=”aa”;b=”bb”}
-用一个值减去另一个值。
对数字取负。
1-1
-1-1
0
-2
*将整数相乘;
按指定次数复制字符串和数组。
2*3
"a”*3
"a”,"b” * 3
6
aaa
a b a b a b
/将两个值相除。6/23
%返回除法运算的余数。7%21

运算符优先级 Windows PowerShell 按照以下顺序处理算术运算符:

  1.  
    1. 圆括号 ()
    2. - (对负数)
    3. *, /, %
    4. +,- (对减法)

二、赋值运算符:

运算符说明示例
=将变量的值设置为指定值。
变量名称必须以$开头

赋值运算符 (=) 的优先级低于管道运算符 (|)

可以将千字节 (KB)、兆字节 (MB) 和千兆字节 (GB) 转换为字节


可以使用单个命令对多个变量赋值

通过将类型名称放在变量名称或第一个所赋值前面的方括号中,可以将新的标量变量转换为任何 .NET Framework 类型

除了使用赋值运算来设置变量值以外,还可以使用 Set-Variable cmdlet
$var = ”test”
$var = 1
$var = 1,2,3
$var = “a”,"b”,"c”
$var = @{a=1;b=2;c=”ccc”}

$var = 1kb
$var = 1mb
$var = 1gb
$var = 1tb

$a,$b,$c=1,2,3

[int]$var = 1
[string]$var = 1
[int[]]$var = 1,2,3
[System.DateTime]$var = get-date


Set-Variable -name a -value 1, 2, 3
+=使变量的值增加指定值,或将指定值追加到现有值。
-=使变量的值减少指定值。
*=将变量的值与指定值相乘,或将指定值追加到现有值。
/=将变量的值除以指定值。
%=将变量的值除以指定值,然后将余数(模)赋予变量。
++使变量、可赋值属性或数组元素的值增加 1。
--使变量、可赋值属性或数组元素的值减少 1。

三、比较运算符:

运算符说明示例结果
-eq等于。包含一个相同的值。1 -eq 1
"abc” -eq “abc”
1,2,3 -eq 2
1,2,3,1,2,3,1,2,3 –eq 2
"abc”,"def” -eq “abc
true
true
2
2,2,2
abc
-ne不等于。包含一个不同的值。1 -ne 1
1,2,3 –ne 1
"abc”,"def” –ne “abc”
false
2,3
def
-gt(>)大于1 -gt 1false
-ge(>=)大于或等于1 -ge 1true
-lt(<)小于1 -lt 1false
-le(<=)小于或等于1 -le 1true
-like使用通配符 (*) 匹配。“abc” -like “*b*”true
-notlike使用通配符 (*) 不匹配。“abc” -notlike “*b*”false
-match当运算符的输入(左侧参数)是一个单标量对象时,-match 和 -notmatch 运算符填充 $Matches 自动变量。当输入是标量时,-match 和 notmatch 运算符返回布尔值,并将 $Matches 自动变量 的值设置为参数的匹配项目。 如果输入是一个集合,则 -match 和 -notmatch 运算符返回该集合中的匹配成员,但运算符不会填 充 $Matches 变量。123 -match “^[/d]+$”




"abc” -match “^[/w]+$”




"abc”,123 –match “^[/d]+"$”
true
($matches为123)



true
($matches为abc)


123
($matches为空)
-notmatch正则表达式比较123 -notmatch “^[/d]+$”false
-contains包含运算符。包含一个相同的完整值(而不是值的一部分)。始终返回布尔值。"abc”,"def” -contains “abc”
"abc”,"def” -contains “ab”
"abc”,"def” -contains “ab*”
true
false
false
-notcontains包含运算符。不包含一个相同值。始终返回布尔值。"abc”,"def” -notcontains “abc”false
-replace替换,支持正则表达式“abc“ -replace “b”,"-"
"a1b2c3” -replace “/d”,"-"
a-c
a-b-c-

默认情况下,所有比较运算符都不区分大小写。若要使一个比较运算符区 分大小写,请在运算符名称前加字母"c"。例如,"-eq"区分大小写的形式 为"-ceq"。若要明确表示不区分大小写,则在运算符前加字母"i"。 例如,"-eq"的明确不区分大小写的形式为"-ieq"。

除包含运算符(-contains、-notcontains)和类型运算符(-is、-isnot)外的 所有比较运算符在运算符的输入(运算符左侧的值)是单个值(标量)时,都将 返回一个布尔值。当输入是值的集合时,包含运算符和类型运算符将返回任何 匹配值。如果集合中没有匹配项,则这些运算符不返回任何值。包含运算符和类型 运算符始终返回布尔值。

 

四、逻辑运算符:

运算符说明示例结果
-and逻辑与。
仅当两条语句都为 TRUE 时才为 TRUE。
$true -and $false
$true -and $true
(1 -eq 1) -and (1 -eq 2)
false
true
false
-or逻辑或。
当其中一条语句为 TRUE或两条语句都为 TRUE 时为 TRUE。
$true -or $false
(1 -eq 1) -or (1 -eq 2)
true
true
-xor逻辑异或。
仅当一条语句为 TRUE而另一条语句为 FALSE 时才为 TRUE。
$true -xor $false
$true -xor $true
true
false
-not
!
逻辑非。对后面的语句取反。-not $true
!$true
false
false

如果包含 and 运算符的 语句的左操作数为 FALSE,则不再计算右操作数。如果包含 or 运算符的语句的左操作数为 TRUE, 则不再计算右操作数。因此,可以像使用 If 语句一样使用这些语句。

 

五、重定向运算符:

运算符说明示例
>将输出发送到指定文件。get-process > process.txt
>>将输出追加到指定文件的内容。dir *.ps1 >> scripts.txt
2>将错误发送到指定文件。get-process none 2> errors.txt
2>>将错误追加到指定文件的内容。get-process none 2>> save-errors.txt
2>&1将错误发送到成功输出流。get-process none, powershell 2>&1

如果指定的文件已存在,则不追加数据的重定向运算符(> 和 2>)将在不发出警告的情况下覆盖文件 当前内容。但是,如果该文件是只读、隐藏或系统文件,则重定向将会失败。追加重定向运算符(>> 和 2>>)不会写入只读文件,但会在系统或隐藏文件中追加内容。

要将内容强制重定向到只读、隐藏或系统文件,请带 Force 参数使用 Out-File cmdlet。当写入 文件时,重定向运算符使用 Unicode 编码(输出5个以下字符会乱码…)。如果文件采用的是不同的编码,可能无法正确设置输出的 格式。要将内容重定向到非 Unicode 文件,请带 Encoding 参数使用 Out-File cmdlet。

 

六、拆分运算符与联接运算符:

运算符说明示例结果
-split拆分运算符。默认定界符是空白,包括空格以及如换行符 (`n) 和制表符 (`t) 等不可 打印字符。
拆分字符串时,将从所有子字符串中省略定界符。
指定返回的子字符串的最大数目。如果子字符串数目大于最大数目,多出的子字符串将合并到最后一个子字符串中

指定定界符应用规则的表达式。该表达式的计算结果必须是 $true 或 $false。脚本块需放在大括号 中。

若要使用一元联接运算符,请将字符串用圆括号括起
-split "red yellow blue green"

"Lastname:FirstName:Address" -split ":"

"a1b2c” –split “/d”


"Mercury,Venus,Earth" -split ",", 2




"Mercury,Venus,Earth" -split {$_ -eq "e"}




-split ("1 2", "a b")
red,yellow,blue,green

Lastname,FirstName,Address

a,b,c


"Mercury”,”Venus,Earth”




M,”rcury,v”,”nus,”,arth




1,2,a,b
-join联接运算符。
将一组字符串连接成单个字符串。
-join ("a", "b", "c")
"a”,"b”,"c” -join “-"
abc
a-b-c

在任何拆分语句中,都可用 -iSplit 或 -cSplit 替换 -split。 -iSplit 和 -split 运算符不区分大小写。-cSplit 运算符区分大小写,这意味着应用定界符规则时会考虑大小写。

 

七、类型运算符:

运算符说明示例结果
-is当输入是一个指定的.NET Framework 类型实例时返回 True。(get-date) -is [datetime]
(get-date) -is “datetime”
1,2 -is [Array]
true
true
true
-isnot当输入不是一个指定的.NET Framework 类型实例时返回 True。(get-date) -isnot [datetime]false
-as将输入转换为指定的.NET Framework 类型。"123” -as [int]123

八、位运算符:

运算符说明示例结果
-bAND位与10 -band 32
-bOR位或10 -bor 311
-bXOR位异或10 -bxor 39

 

九、特殊运算符:

运算符说明示例
&调用运算符。
运行命令、脚本或脚本块。
因为调用运算符不进行分析,所以它不能解释命令参数。 此调用运算符用于指示它后面的值为命令。
& "new cmdlet"
$c = "get-executionpolicy"
& $c
.属性取消引用运算符。
访问对象的属性和方法。

使用点"."获得来源运算符,运行脚本。

点 (.) 还用作父目录符号
$myString.length
$myString.substring(1,3)


. c:/scripts.sample.ps1

./sample.ps1
::静态成员运算符。
调用 .NET Framework 类的静态属性运算符和方法。
要查找对象的静态属性和方法, 请使用 Get-Member cmdlet 的 Static 参数。
[datetime]::now
..范围运算符。
表示给定上下限的整数数组中的序列整数。
1..10
10..1
foreach ($a in 1..$max) {write-host $a}
-f格式运算符。
使用字符串对象的格式化方法对字符串进行格式化。
在运算符左侧输入格式字符串, 在运算符右侧输入要格式化的对象。
"{0} {1,-10} {2:N}" -f 1,"hello",[math]::pi
$( )子表达式运算符。
返回一条或多条语句的结果。对于单个结果将返回标量。对于多个结果将返回数组。
$($x * 23) $(Get-WMIObject win32_Directory)
@( )数组子表达式运算符。
通过数组返回一条或多条语句的结果。如果只有一项,则数组只有一个成员。
@(Get-WMIObject win32_logicalDisk)
运算符用作二元运算符时,逗号用于创建数组。用作一元运算符时,逗号用于创建只含一个成员的数组。$myArray = 1,2,3
$SingleArray = ,1

 

本文地址:http://www.cnblogs.com/lwme/archive/2010/04/16/1713955.html

本文内容整理自MSDN:about_Operators

作者:囧月
出处:http://lwme.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值