對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2015/11/30 9:56:08
PowerShell 指令 Alias
PowerShell Commandlet 常用參數
PowerShell 關連性陣列(Associative Array)
關聯陣列提供用於儲存多重索引鍵/值配對的資料結構。例如,個人的姓名就像是索引
鍵,而個人的出生日期則像是值。關聯陣列提供的結構可儲存姓名和出生日期的
集合,其中每個姓名都有對應的出生日期。可以將關聯陣列想像成兩欄的表格,
第一欄是索引鍵,第二欄則是值。
關聯陣列與 PowerShell 中的標準陣列類似,但並非依索引編號來參照陣列的內容,而
是依索引鍵來參照關聯陣列中的資料元素。PowerShell 會依據索引鍵從關聯陣列傳回
對應的值。
PowerShell 使用雜湊表資料型別藉以儲存關聯陣列的內容,原因在於這種資料結構提
供快速的搜尋機制。這一點極為重要,因為關聯陣列的主要用途正是提供高效率的
搜尋機制。
在關聯陣列中,您可以使用異質資料型別。例如,關聯陣列可建立成包含整數、
Cmdlet 呼叫和字串,三者各自指定不同的索引鍵。
關聯陣列的語法如下:
建立與初始化關聯陣列的方式大致如同建立與初始化標準陣列。然而,關聯陣列還必
須符合下列要求:
* 關聯陣列中的每個值應指定標籤。
* 陣列內容的外面應附加 @ 記號。
* 包含空格的索引鍵或值應置於單引號或雙引號中。
例如,若要建立名稱為 $phone 的關聯陣列,且包含 Kim Akers、Ken Myers 和 Greg
Chapman 的電話號碼,請在 PowerShell 命令提示字元輸入下列單行命令:
若要顯示陣列的內容,請輸入下列命令:
執行此命令之後的輸出結果如下:
您可以使用數種方法選擇所要顯示的元素。不論是句號標記法或陣列標記法皆可。例
如,下列兩個命令都會顯示 Greg Chapman 索引鍵的電話號碼:
索引鍵和值只有包含空格時才必須加上引號 (單引號或雙引號),否則就不需要引號。
例如,下列單行命令不需要引號:
然而,若您打算將索引鍵的關聯值儲存成字串常值,則應將值置於單引號或雙引號中。
例如,假設您使用下列命令建立 $phone 關聯陣列:
輸入 $phone 之後的輸出結果會變成這樣:
由於指定的值沒有加上單引號或雙引號,PowerShell 會將各個值解譯為整數,並將連
字號解譯為減法運算子 (例如,425-555-0183 = -313)。使用下列命令即可避免此
問題:
上述幾個範例示範了包含同質資料型別的關聯陣列。使用 GetType 方法可確認關聯陣
列屬於 hashtable (雜湊表) 資料型別,如下所示:
若要檢查關聯陣列中個別元素的資料型別,請使用下列其中一種方法,呼叫 $phone 關
聯陣列同時指定索引鍵:
關聯陣列可以包含不同的資料型別組合,如以下範例所示:
在此範例中,Key1 包含整數,Key2 包含 Cmdlet 的執行結果,且 Key3 包含字串。
CommandType Name Definition
----------- ---- ----------
Alias ac Add-Content
Alias asnp Add-PSSnapin
Alias clc Clear-Content
Alias cli Clear-Item
Alias clp Clear-ItemProperty
Alias clv Clear-Variable
Alias cpi Copy-Item
Alias cpp Copy-ItemProperty
Alias cvpa Convert-Path
Alias diff Compare-Object
Alias epal Export-Alias
Alias epcsv Export-Csv
Alias fc Format-Custom
Alias fl Format-List
Alias foreach ForEach-Object
Alias % ForEach-Object
Alias ft Format-Table
Alias fw Format-Wide
Alias gal Get-Alias
Alias gc Get-Content
Alias gci Get-ChildItem
Alias gcm Get-Command
Alias gdr Get-PSDrive
Alias ghy Get-History
Alias gi Get-Item
Alias gl Get-Location
Alias gm Get-Member
Alias gp Get-ItemProperty
Alias gps Get-Process
Alias group Group-Object
Alias gsv Get-Service
Alias gsnp Get-PSSnapin
Alias gu Get-Unique
Alias gv Get-Variable
Alias gwmi Get-WmiObject
Alias iex Invoke-Expression
Alias ihy Invoke-History
Alias ii Invoke-Item
Alias ipal Import-Alias
Alias ipcsv Import-Csv
Alias mi Move-Item
Alias mp Move-ItemProperty
Alias nal New-Alias
Alias ndr New-PSDrive
Alias ni New-Item
Alias nv New-Variable
Alias oh Out-Host
Alias rdr Remove-PSDrive
Alias ri Remove-Item
Alias rni Rename-Item
Alias rnp Rename-ItemProperty
Alias rp Remove-ItemProperty
Alias rsnp Remove-PSSnapin
Alias rv Remove-Variable
Alias rvpa Resolve-Path
Alias sal Set-Alias
Alias sasv Start-Service
Alias sc Set-Content
Alias select Select-Object
Alias si Set-Item
Alias sl Set-Location
Alias sleep Start-Sleep
Alias sort Sort-Object
Alias sp Set-ItemProperty
Alias spps Stop-Process
Alias spsv Stop-Service
Alias sv Set-Variable
Alias tee Tee-Object
Alias where Where-Object
Alias ? Where-Object
Alias write Write-Output
Alias cat Get-Content
Alias cd Set-Location
Alias clear Clear-Host
Alias cp Copy-Item
Alias h Get-History
Alias history Get-History
Alias kill Stop-Process
Alias lp Out-Printer
Alias ls Get-ChildItem
Alias mount New-PSDrive
Alias mv Move-Item
Alias popd Pop-Location
Alias ps Get-Process
Alias pushd Push-Location
Alias pwd Get-Location
Alias r Invoke-History
Alias rm Remove-Item
Alias rmdir Remove-Item
Alias echo Write-Output
Alias cls Clear-Host
Alias chdir Set-Location
Alias copy Copy-Item
Alias del Remove-Item
Alias dir Get-ChildItem
Alias erase Remove-Item
Alias move Move-Item
Alias rd Remove-Item
Alias ren Rename-Item
Alias set Set-Variable
Alias type Get-Content
PowerShell Commandlet 常用參數
參數 描述
--------- --------------------------------------------------
Verbose Boolean (布林值)。產生與作業有關的詳細資訊,就好像追蹤記錄或
交易記錄。只有用在產生詳細資訊資料的 cmdlet 中,此參數才有
效用。
Debug Boolean (布林值)。產生與作業有關的�{式�]計層級詳細資料。只有
用在產生偵錯資料的 cmdlet 中,此參數才有效用。
ErrorAction Enum (列舉)。決定 cmdlet 在錯誤發生時該如何回應。其值為:
Continue [預�]值]、Stop、SilentlyContinue、Inquire。
ErrorVariable String (字串)。指定變數用於儲存命令在處理期間傳回的錯誤。此
變數會隨 $error 一同傳播。
OutVariable String (字串)。指定變數用於儲存命令在處理期間傳回的輸出。
OutBuffer Int32 (整數)。決定在呼叫管線中的下一個 cmdlet 命令前,要放入
緩衝區的物件數目。
除了一般參數外,會變更系統狀態的 cmdlet 還支援下列兩個參數。
參數 描述
--------- -------------------------------------------------------
WhatIf Boolean (布林值)。說明執行命令時將會發生何種情況,但不會實際
執行命令。
Confirm Boolean (布林值)。在執行任何修改系統的動作前,提示使用者出示
權限。
PowerShell 關連性陣列(Associative Array)
關聯陣列提供用於儲存多重索引鍵/值配對的資料結構。例如,個人的姓名就像是索引
鍵,而個人的出生日期則像是值。關聯陣列提供的結構可儲存姓名和出生日期的
集合,其中每個姓名都有對應的出生日期。可以將關聯陣列想像成兩欄的表格,
第一欄是索引鍵,第二欄則是值。
關聯陣列與 PowerShell 中的標準陣列類似,但並非依索引編號來參照陣列的內容,而
是依索引鍵來參照關聯陣列中的資料元素。PowerShell 會依據索引鍵從關聯陣列傳回
對應的值。
PowerShell 使用雜湊表資料型別藉以儲存關聯陣列的內容,原因在於這種資料結構提
供快速的搜尋機制。這一點極為重要,因為關聯陣列的主要用途正是提供高效率的
搜尋機制。
在關聯陣列中,您可以使用異質資料型別。例如,關聯陣列可建立成包含整數、
Cmdlet 呼叫和字串,三者各自指定不同的索引鍵。
關聯陣列的語法如下:
$<�}列名稱> = @{<索引鍵1 = 項目1>; <索引鍵2 = 項目2>;...}
建立與初始化關聯陣列的方式大致如同建立與初始化標準陣列。然而,關聯陣列還必
須符合下列要求:
* 關聯陣列中的每個值應指定標籤。
* 陣列內容的外面應附加 @ 記號。
* 包含空格的索引鍵或值應置於單引號或雙引號中。
例如,若要建立名稱為 $phone 的關聯陣列,且包含 Kim Akers、Ken Myers 和 Greg
Chapman 的電話號碼,請在 PowerShell 命令提示字元輸入下列單行命令:
$phone = @{'Kim Akers' = '(425) 555-0183'; 'Ken Myers' =
'(425) 555-0184'; 'Greg Chapman' = '(425) 555-0185'}
若要顯示陣列的內容,請輸入下列命令:
$phone
執行此命令之後的輸出結果如下:
索引鍵 值
------------------------------ --------------
Ken Myers (425) 555-0184
Greg Chapman (425) 555-0185
Kim Akers (425) 555-0183
您可以使用數種方法選擇所要顯示的元素。不論是句號標記法或陣列標記法皆可。例
如,下列兩個命令都會顯示 Greg Chapman 索引鍵的電話號碼:
$phone.'Greg Chapman'
$phone['Greg Chapman']
索引鍵和值只有包含空格時才必須加上引號 (單引號或雙引號),否則就不需要引號。
例如,下列單行命令不需要引號:
$phone = @{Kim_Akers = 4255550183; Ken_Myers = 4255550184;
Greg_Chapman = 4255550185}
然而,若您打算將索引鍵的關聯值儲存成字串常值,則應將值置於單引號或雙引號中。
例如,假設您使用下列命令建立 $phone 關聯陣列:
$phone = @{Kim_Akers = 425-555-0183; Ken_Myers =
425-555-0184; Greg_Chapman = 425-555-0185}
輸入 $phone 之後的輸出結果會變成這樣:
索引鍵 值
------------------------------ -----
Kim_Akers -313
Greg_Chapman -315
Ken_Myers -314
由於指定的值沒有加上單引號或雙引號,PowerShell 會將各個值解譯為整數,並將連
字號解譯為減法運算子 (例如,425-555-0183 = -313)。使用下列命令即可避免此
問題:
$phone = @{Kim_Akers = '425-555-0183'; Ken_Myers =
'425-555-0184'; Greg_Chapman = '425-555-0185'}
上述幾個範例示範了包含同質資料型別的關聯陣列。使用 GetType 方法可確認關聯陣
列屬於 hashtable (雜湊表) 資料型別,如下所示:
$phone.GetType()
若要檢查關聯陣列中個別元素的資料型別,請使用下列其中一種方法,呼叫 $phone 關
聯陣列同時指定索引鍵:
$phone.Kim_Akers.GetType()
$phone['Kim_Akers'].GetType()
關聯陣列可以包含不同的資料型別組合,如以下範例所示:
$hashMix = @{Key1 = 1; Key2 = Get-ChildItem ; Key3 =
"testing"}
在此範例中,Key1 包含整數,Key2 包含 Cmdlet 的執行結果,且 Key3 包含字串。