PowerShell Cmdlet高級參數介紹,你都知道多少?
1、ErrorVariable 錯誤變量
上篇文章我們講過$Error變量,對于PowerShell執行出現的錯誤會被寫入到這個變量里面,加上時間的累積,這個變量的數據量就會非常大,我們平常在排查問題的時候需要對錯誤信息進行Debu調試,這個時候ErrorVariable 就可以解決這個問題,它的主要作用是把執行出現錯誤的信息輸出到我們定義的變量里面去。
變量輸出方式:覆蓋的方式輸出錯誤信息到變量;追加的方式輸出錯誤信息到變量(自定義變量前面增加 + 號 )。
示例:移除一個不存在的 端午節2.txt命令如下:
remove-item 端午節2.txt -ErrorVariable CurrError
$CurrError #輸出錯誤信息
#再執行一遍
remove-item 端午節2.txt -ErrorVariable CurrError
$CurrError #輸出錯誤信息 #發現錯誤信息沒有新增為兩條
# 給命令增加+號 實現錯誤信息追加
remove-item 端午節2.txt -ErrorVariable +CurrError
$CurrError #輸出兩條錯誤信息表示追加成功了
覆蓋方式執行:
追加命令:
2、OutVariable 結果輸出
OutVariable的功能和Tee-Object比較類似,把當前命令的執行結果輸出到定義的變量當中去,然后在命令結果傳遞到管道的同時,把執行結果保存到PowerShell變量中去。
示例:
獲取Logs目錄的信息:
Get-ChildItem
獲取的Logs目錄信息保存的輸出變量LogList。
Get-ChildItem -OutVariable LogList
#輸出LogList變量
$LogList
3、OutBuffer 輸出Buffer定義
確定在通過管道發送任何對象之前,緩沖區中要累積的對象數。 如果省略此參數,則會在生成對象時發送對象。
此參數定義在將任何對象向下傳遞管道之前要存儲在輸出緩沖區中的對象數。 默認情況下,對象會立即沿管道向下傳遞。
參數類型為Int32。
官方示例:
以 ForEach-Object 處理使用 Write-Host cmdlet 的塊。 顯示以 2 或 OutBuffer + 1的批次交替顯示。
1..4 | ForEach-Object {
Write-Host "$($_): First"; $_
} -OutBuffer 1 | ForEach-Object {
Write-Host "$($_): Second" }
輸出結果:
1: First
2: First
1: Second
2: Second
3: First
4: First
3: Second
4: Second
4、PipelineVariable管道參數
PipelineVariable 允許訪問使用此參數的命令傳遞到下一管道段的最新值。 管道中的任何命令都可以使用命名的 PipelineVariable 訪問值。 當變量傳遞到下一個管道段時,該值將分配給變量。 這使得 PipelineVariable 比特定的臨時變量更易于使用,可能需要在多個位置分配該臨時變量。
使用 PipelineVariable 允許任何管道命令訪問 (傳遞的管道值,并) 由上一個命令以外的命令保存。 管道命令可以在處理通過管道的下一項時訪問從中傳遞的最后一個值。
示例:
第一個Foreach-Object命令的結果通過管道傳遞到第二Foreach-Object個命令中,該命令顯示 和 $_的$temp當前值。
# Create a variable named $temp
$temp=8
Get-Variable temp
# Note that the variable just created isn't available on the
# pipeline when -PipelineVariable creates the same variable name
1..5 | ForEach-Object -PipelineVariable temp -Begin {
Write-Host "Step1[BEGIN]:`$temp=$temp"
} -Process {
Write-Host "Step1[PROCESS]:`$temp=$temp - `$_=$_"
Write-Output $_
} | ForEach-Object {
Write-Host "`tStep2[PROCESS]:`$temp=$temp - `$_=$_"
}
# The $temp variable is deleted when the pipeline finishes
Get-Variable temp
輸出:
Name Value
---- -----
temp 8
Step1[BEGIN]:$temp=
Step1[PROCESS]:$temp= - $_=1
Step2[PROCESS]:$temp=1 - $_=1
Step1[PROCESS]:$temp=1 - $_=2
Step2[PROCESS]:$temp=2 - $_=2
Step1[PROCESS]:$temp=2 - $_=3
Step2[PROCESS]:$temp=3 - $_=3
Step1[PROCESS]:$temp=3 - $_=4
Step2[PROCESS]:$temp=4 - $_=4
Step1[PROCESS]:$temp=4 - $_=5
Step2[PROCESS]:$temp=5 - $_=5
Name Value
---- -----
temp