-
PowerShell 之 教程
PowerShell 中變量、函數命名等不區分大小寫,但字符串區分大小寫
powershell 腳本文件 擴展名為 .ps1
調用操作符 & + Cmd
Cmd 只能有1個
PowerShell 交互式
1. 執行數學運算
常用的(+ - * / % !)
2. 執行外部命令 或 腳本
3. 別名
可以對 命令、函數起 別名
PowerShell 語法:
注釋:
單行注釋:
在每行第一字符出現之前 加 #
1. 變量
自定義變量:
聲明:
$var = value (自動創建,並初始化)
使用:
$var
${var}
其他功能:
1. 給多個變量賦值
$a = $b = $c = 123
2. 交換變量的值
$a = 1
$b=2
$value1,$value2=$value2,$value1
3. 查看正在使用的變量
ls variable:
4. 驗證變量是否存在
Test-Path variable:變量
5. 刪除變量
del variable:變量
使用命令管理變量:
Clear-Variable
Get-Variable
New-Variable
Remove-Variable
Set-Variable
變量作用域:
$global
全局變量,在所有的作用域中有效,如果你在腳本或者函數中設置了全局變量,即使腳本和函數都運行結束,這個變量也任然有效。
$script
腳本變量,只會在腳本內部有效,包括腳本中的函數,一旦腳本運行結束,這個變量就會被回收。
$private
私有變量,只會在當前作用域有效,不能貫穿到其他作用域。
$local
默認變量,可以省略修飾符,在當前作用域有效,其它作用域只對它有只讀權限。
2. 數據變量(內置)
數組
數組內可以存一切的內容, 是弱類型的語言
聲明:
1) 使用逗號
$數組 = value1,value2,...
如果數組是連續的數: [可正序可反序]
$數組=1..9 --- 1,2,3,4,5,6,7,8,9
2) 使用@符號
$數組=@(value1,value2,...)
訪問:
數組索引是從0開始
$var[Index]
Index:
取值:
-Var.Size() ~ +(Var.Size() - 1 )
值為負時:
逆向索引
單個元素:
訪問Index位置的元素
多個元素:
訪問多個索引位置對應的元素,索引之間用','區分
$var[start..end]
start: 開始位置
end: 結束位置
輸出從start位置到end位置的元素
添加:
利用 $變量+=值 添加
強類型數組:
在數組變量前 加類型名
[int []] $name=@("A","B")
hash表
聲明(創建):
$var = @{key1="value1";key2="value2";...}
哈希表中可存儲數組:
$var = @{key1="value1_1,value1_2,...";...}
訪問key的值:
$var["key"]
3. 管道
4. 對象
Powershell中處處皆為對象。
對象就會有屬性,方法等之稱。
新建對象:
new-object:
利用該關鍵字創建對象,
5. 控制結構
運算符:
比較運算符:
-eq :等於
-ne :不等於
-gt :大於
-ge :大於等於
-lt :小於
-le :小於等於
-contains :包含
-notcontains :不包含
求反:
-not : 非
! : 非
布爾運算:
-and :和
-or :或
-xor :異或
-not :逆
If 條件:
條件為真才會執行以下語句
1)if(條件){
執行語句
}
2)if(條件){
執行語句
}
Else
{
執行語句
}
3) if(條件){
執行語句
}
ElseIf(條件){
執行語句
}
Switch 條件:
Switch($value)
{
匹配值1 {執行語句}
匹配值2 {執行語句}
匹配值3 {執行語句}
匹配值4 {執行語句}
Default {執行語句}
}
支持通配符:
* 所有
支持正則表達式:
-regex($val)
eg:
$value=18
# 使用 Switch 測試取值范圍
switch($value)
{
{$_ -lt 10} {"小於10"}
10 {"等於10"}
{$_ -gt 10} {"大於10"}
}
#輸出
#大於10
6. 循環結構
跳出循環關鍵字:
break: 跳出循環語句
continue: 跳出本次循環
for:
for(;;;) ---- 和 C 一樣
{
執行語句
}
foreach:
foreach (元素 in 集合)
{
執行語句
}
while:
do-while:
do{
執行語句
}
while(條件)
while:
while(條件)
{
執行語句
}
Switch:
Switch支持集合循環:
eg:
$nums = 10..7
Switch ($nums)
{
{($_ % 2) -eq 0} {"$_ 偶數"}
{($_ % 2) -ne 0} {"$_ 奇數"}
}
10 偶數
9 奇數
8 偶數
7 奇數
7. 函數
任意參數:內部變量$args 接受函數調用時接受的參數,$args是一個數組類型。
命名參數:函數的每一個參數可以分配一個名稱,在調用時通過名稱指定對應的參數。
預定義參數:函數在定義參數時可以指定默認值,如果調用時沒有專門指定參數的值,就會保持默認值。
聲明:
Function 函數名(參數表args[]) ---- 參數可以寫在函數體 ,與 管道寫法一致,需要加Param關鍵字
{
執行語句
}
刪除:
del Function:函數名
調用 與 傳參:
函數名 參數名1 參數名2 ...
返回值:
1個:
return 值
多個:
{
value1
value2
...
}
或
{
value1
return value2
... ---- 這里后面的不會返回, 因為return 返回后就直接結束函數了。
}
管道函數:
順序模式: --- 效率低
將上一個執行結構保留到 $input
eg:
PS E:mossfly.com> Function output
>> {
>> $input
>> }
PS E:mossfly.com> 1,2,3 | output
流模式: --- 高效率
利用begin、process、end 語句塊
Function 函數名
{
begin
{
}
process
{
}
end
{
}
}
8. 錯誤處理
9. 字符串相關操作:
Powershell轉義字符表
轉義字符 描述
`n 換行符
`r 回車符
`t 制表符
`a 響鈴符
`b 退格符
`’ 單引號
`” 雙引號
`0 Null
“ 反引號本身
定義多行文本
@" 字符串 "@
字符串操作符:
-f
格式化字符串
占位符{0},{1},{2},{3},...
*
代表一個字符串
“PsTips.Net” -like “*”
+
合並兩個字符串
“Power” + “Shell”
-replace,-ireplace
替換字符串,大小寫不敏感
“PsTips.Net” -replace “tip”,”1″
-creplace
替換字符串,大小寫敏感
“PsTips.Net” -replace “Tip”,”1″
-eq, -ieq
驗證是否相等,大小寫不敏感
“Power” -eq “power”
-ceq
驗證是否相等,大小寫敏感
“Power” -eq “Power”
-like, -ilike
驗證字符串包含關系,允許模式匹配,大小寫不敏感
“PsTips.Net” -like “p*”
-clike
驗證字符串包含關系,允許模式匹配,大小寫敏感
“PsTips.Net” – clike “P*”
-notlike,
-inotlike
驗證字符串不包含關系,允許模式匹配,大小寫不敏感
“PowerShell” -notlike “PS*”
-cnotlike
驗證字符串不包含關系,允許模式匹配,大小寫敏感
“PowerShell” -cnotlike “PO*”
-match,-imatch
驗證模式匹配,大小寫不敏感
“PowerShell” -match “P*”
-cmatch
驗證模式匹配,大小寫敏感
“Hello” -match “[ao]”
-notmatch,
-inotmatch
驗證模式不匹配,大小寫不敏感
“Hello” -notmatch “[ao]”
-cnotmatch
驗證模式不匹配,大小寫敏感
“Hello” -cnotmatch “[ao]”