一、算術運算子:
運算子 |
說明 |
樣本 |
結果 |
+ |
將整數相加; 連接字串、數組和雜湊表。 串連雜湊表時不能有相同的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/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,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 |
這一章沒有什麼好說的啊,就是要記住的,以後會用到。