脚本编程:Powershell:Powershell 常用参数修饰词选项
前言
几个常用Powershell参数修饰词
正文
function Write-Log
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true)]
[ValidateNotNullOrEmpty()]
[Alias("LogContent")]
[string]$Message,
[Parameter(Mandatory=$false)]
[Alias('LogPath')]
[string]$Path='C:\Logs\PowerShellLog.log',
[Parameter(Mandatory=$false)]
[ValidateSet("Error","Warn","Info")]
[string]$Level="Info",
[Parameter(Mandatory=$false)]
[switch]$NoClobber
)
Mandatory=$true | false
修饰参数,是否强制要求函数带上这个参数ValueFromPipelineByPropertyName=$true | false
,是否从管道接收属性值,比较常用如果从上一个cmdlet的输出当输入[ValidateNotNullOrEmpty()]
,验证参数值是否null[Alias("LogContent")]
, 参数别名[ValidateSet("Error","Warn","Info")]
限定参数可选值[switch]$NoClobber
, 定义一个开关布尔值数,使用-NoClobber
。带上默认值则true
,不带则false
补充
(2024/06/11 补充)
CmdletBinding
是 PowerShell 中的一个特性,用于标记自定义函数具有类似于内置 cmdlet 的行为。当你在 PowerShell 函数定义中添加 [CmdletBinding()]
特性时,你为函数赋予了一些特定的功能和规则,这些功能通常与 PowerShell 的命令行接口相一致。以下是一些 CmdletBinding
特性的关键特性:
参数设置器 (Parameter Sets):你可以定义多个参数集,允许用户以不同方式调用函数,同时确保参数的互斥性和必需性。
开关参数 (Switch Parameters):允许你创建不需要值的布尔参数。
常见参数 (Common Parameters):启用一些常见的 PowerShell 参数,如
-Verbose
,-Debug
,-ErrorAction
,-WarningAction
,-WhatIf
和-Confirm
等,这些参数提供了诊断和控制执行流程的选项。绑定行为 (Binding Behavior):例如,
-Confirm
和-WhatIf
参数会影响函数的执行,使得在执行前可以确认或预览操作。错误处理 (Error Handling):可以指定如何处理错误,比如使用
-ErrorAction
参数来控制遇到错误时的行为。命令生命周期回调方法 (Command Lifecycle Callback Methods):如
BeginProcessing
,ProcessRecord
, 和EndProcessing
方法,这些方法在函数执行的不同阶段被调用,让你可以控制函数的执行流程。
例如,一个简单的带有 CmdletBinding
的 PowerShell 函数定义如下:
function MyFunction {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]$Name
)
Write-Output "Hello, $Name!"
}
在这个例子中,CmdletBinding
特性使函数具备了 PowerShell cmdlet 的基本行为,Mandatory=$true
表示 Name
参数是必需的。