上篇文章我們講過$Error變量,對(duì)于PowerShell執(zhí)行出現(xiàn)的錯(cuò)誤會(huì)被寫入到這個(gè)變量里面,加上時(shí)間的累積,這個(gè)變量的數(shù)據(jù)量就會(huì)非常大,我們平常在排查問題的時(shí)候需要對(duì)錯(cuò)誤信息進(jìn)行Debu調(diào)試,這個(gè)時(shí)候ErrorVariable 就可以解決這個(gè)問題,它的主要作用是把執(zhí)行出現(xiàn)錯(cuò)誤的信息輸出到我們定義的變量里面去。
變量輸出方式:覆蓋的方式輸出錯(cuò)誤信息到變量;追加的方式輸出錯(cuò)誤信息到變量(自定義變量前面增加 + 號(hào) )。
示例:移除一個(gè)不存在的 端午節(jié)2.txt命令如下:
remove-item 端午節(jié)2.txt -ErrorVariable CurrError$CurrError #輸出錯(cuò)誤信息#再執(zhí)行一遍remove-item 端午節(jié)2.txt -ErrorVariable CurrError $CurrError #輸出錯(cuò)誤信息 #發(fā)現(xiàn)錯(cuò)誤信息沒有新增為兩條# 給命令增加+號(hào) 實(shí)現(xiàn)錯(cuò)誤信息追加remove-item 端午節(jié)2.txt -ErrorVariable +CurrError$CurrError #輸出兩條錯(cuò)誤信息表示追加成功了
覆蓋方式執(zhí)行:
追加命令:
OutVariable的功能和Tee-Object比較類似,把當(dāng)前命令的執(zhí)行結(jié)果輸出到定義的變量當(dāng)中去,然后在命令結(jié)果傳遞到管道的同時(shí),把執(zhí)行結(jié)果保存到PowerShell變量中去。
示例:
獲取Logs目錄的信息:
Get-ChildItem
獲取的Logs目錄信息保存的輸出變量LogList。
Get-ChildItem -OutVariable LogList#輸出LogList變量$LogList
確定在通過管道發(fā)送任何對(duì)象之前,緩沖區(qū)中要累積的對(duì)象數(shù)。 如果省略此參數(shù),則會(huì)在生成對(duì)象時(shí)發(fā)送對(duì)象。
此參數(shù)定義在將任何對(duì)象向下傳遞管道之前要存儲(chǔ)在輸出緩沖區(qū)中的對(duì)象數(shù)。 默認(rèn)情況下,對(duì)象會(huì)立即沿管道向下傳遞。
參數(shù)類型為Int32。
官方示例:
以 ForEach-Object 處理使用 Write-Host cmdlet 的塊。 顯示以 2 或 OutBuffer + 1的批次交替顯示。
1..4 | ForEach-Object { Write-Host "$($_): First"; $_ } -OutBuffer 1 | ForEach-Object { Write-Host "$($_): Second" }
輸出結(jié)果:
1: First2: First1: Second2: Second3: First4: First3: Second4: Second
PipelineVariable 允許訪問使用此參數(shù)的命令傳遞到下一管道段的最新值。 管道中的任何命令都可以使用命名的 PipelineVariable 訪問值。 當(dāng)變量傳遞到下一個(gè)管道段時(shí),該值將分配給變量。 這使得 PipelineVariable 比特定的臨時(shí)變量更易于使用,可能需要在多個(gè)位置分配該臨時(shí)變量。
使用 PipelineVariable 允許任何管道命令訪問 (傳遞的管道值,并) 由上一個(gè)命令以外的命令保存。 管道命令可以在處理通過管道的下一項(xiàng)時(shí)訪問從中傳遞的最后一個(gè)值。
示例:
第一個(gè)Foreach-Object命令的結(jié)果通過管道傳遞到第二Foreach-Object個(gè)命令中,該命令顯示 和 $_的$temp當(dāng)前值。
# Create a variable named $temp$temp=8Get-Variable temp# Note that the variable just created isn't available on the# pipeline when -PipelineVariable creates the same variable name1..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 finishesGet-Variable temp
輸出:
Name Value---- -----temp 8Step1[BEGIN]:$temp=Step1[PROCESS]:$temp= - $_=1 Step2[PROCESS]:$temp=1 - $_=1Step1[PROCESS]:$temp=1 - $_=2 Step2[PROCESS]:$temp=2 - $_=2Step1[PROCESS]:$temp=2 - $_=3 Step2[PROCESS]:$temp=3 - $_=3Step1[PROCESS]:$temp=3 - $_=4 Step2[PROCESS]:$temp=4 - $_=4Step1[PROCESS]:$temp=4 - $_=5 Step2[PROCESS]:$temp=5 - $_=5Name Value---- -----temp
本文鏈接:http://www.tebozhan.com/showinfo-26-64973-0.htmlPowerShell Cmdlet高級(jí)參數(shù)介紹,你都知道多少?
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com