Power Shell 學習筆記(五)運算子

來源:互聯網
上載者:User

一、算術運算子:

運算子

樣本

+

將整數相加;
連接字串、數組和雜湊表。
串連雜湊表時不能有相同的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”}


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


-2

*

將整數相乘;
按指定次數複製字串和數組。

2*3 
"a”*3 
"a”,"b” * 3


aaa 
a b a b a b

/

將兩個值相除。

6/2

3

%

返回除法運算的餘數。

7%2

1

運算子優先順序 Windows PowerShell 按照以下順序處理算術運算子:

1. 圓括弧 ()

2. - (對負數)

3. *, /, %

4. +,- (對減法)

二、賦值運算子:

運算子

樣本

=

將變數的值設定為指定值。
變數名稱必須以$開頭
賦值運算子 (=) 的優先順序低於管道運算子 (|) 
可以將KB (KB)、MB (MB) 和千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 
abc

-ne

不等於。包含一個不同的值。

1 -ne 1 
1,2,3 –ne 1 
"abc”,"def” –ne “abc”

false 
2,3 
def

-gt

(>)大於

1 -gt 1

false

-ge

(>=)大於或等於

1 -ge 1

true

-lt

(

1 -lt 1

false

-le

(

1 -le 1

true

-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

Regex比較

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

替換,支援Regex

“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 3

2

-bOR

位或

10 -bor 3

11

-bXOR

位異或

10 -bxor 3

9

九、特殊運算子:

運算子

樣本

&

調用運算子。
運行命令、指令碼或指令碼塊。
因為調用運算子不進行分析,所以它不能解釋命令參數。 此調用運算子用於指示它後面的值為命令。

& "new cmdlet" 
$c = "get-executionpolicy" 
& $c

.

屬性取值 (Dereference)運算子。
訪問對象的屬性和方法。
使用點"."獲得來源運算子,運行指令碼。
點 (.) 還用作父目錄符號

$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

這一章沒有什麼好說的啊,就是要記住的,以後會用到。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.