PowerShell系列(十二):PowerShell Cmdlet高级参数介绍(二)

目录

[1、ErrorVariable 错误变量](#1、ErrorVariable 错误变量)

[2、OutVariable 结果输出](#2、OutVariable 结果输出)

[3、OutBuffer 输出Buffer定义](#3、OutBuffer 输出Buffer定义)

4、PipelineVariable管道参数


今天给大家讲解PowerShell Cmdlet高级参数第二部分相关的知识,希望对大家学习PowerShell能有所帮助!

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`
`
相关推荐
hzyyyyyyyu1 小时前
内网安全隧道搭建-ngrok-frp-nps-sapp
服务器·网络·安全
Mr_Xuhhh2 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
中云DDoS CC防护蔡蔡3 小时前
微信小程序被攻击怎么选择高防产品
服务器·网络安全·微信小程序·小程序·ddos
HPC_fac130520678164 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
yaoxin5211235 小时前
第二十七章 TCP 客户端 服务器通信 - 连接管理
服务器·网络·tcp/ip
sinat_384241099 小时前
使用 npm 安装 Electron 作为开发依赖
服务器
Kkooe11 小时前
GitLab|数据迁移
运维·服务器·git
虚拟网络工程师13 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb
BLEACH-heiqiyihu13 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器