14
-WhatIf와 같은 경우에는 [CmdletBinding] 특성에 의해 $ PSCmdlet.ShouldProcess()가 제공됩니다. -Verbose, -Debug, -PassThru 등과 같은 공통 명령 행 인수를 구현하기위한 다른 도구 또는 관행이 있습니까?Powershell : 표준 스위치를 구현하는 방법은 무엇입니까?
-WhatIf와 같은 경우에는 [CmdletBinding] 특성에 의해 $ PSCmdlet.ShouldProcess()가 제공됩니다. -Verbose, -Debug, -PassThru 등과 같은 공통 명령 행 인수를 구현하기위한 다른 도구 또는 관행이 있습니까?Powershell : 표준 스위치를 구현하는 방법은 무엇입니까?
Write-Debug
및 Write-Verbose
은 -Debug
및 -Verbose
매개 변수를 자동으로 처리합니다.
-PassThru
기술적 공통 매개 변수 아니지만, 당신은 그것을 좋아 구현할 수 있습니다
function PassTest {
param(
[switch] $PassThru
)
process {
if($PassThru) {$_}
}
}
1..10|PassTest -PassThru
을 그리고 이것은 cmdlet에서 함수의 경유 값을 사용하는 예제입니다
function Add-ScriptProperty {
param(
[string] $Name,
[ScriptBlock] $Value,
[switch] $PassThru
)
process{
# Use ":" to explicitly set the value on a switch parameter
$_| Add-Member -MemberType ScriptProperty -Name $Name -Value $Value `
-PassThru:$PassThru
}
}
$calc = Start-Process calc -PassThru|
Add-ScriptProperty -Name SecondsOld `
-Value {((Get-Date)-$this.StartTime).TotalSeconds} -PassThru
sleep 5
$calc.SecondsOld
되세요 자세한 내용은 Get-Help about_CommonParameters
을보십시오.
입력 변수를 저장하고 끝에 저장된 변수를 passthru ($ passthru 인 경우)하는 것이 좋습니다. – Matt
예, 'PassTest'는 유용한 기능이 아닙니다. '-PassThru'가 구현 될 수있는 방법을 보여주는 간단한 예입니다. 또한 입력 변수를 사용하여 무언가를 할 수도 있지만 원본 값을 변경하지 않아도됩니다 (예 :'$ _. Kill(); if ($ PassThru) {$ _}'). 다른 명령의 PassThru를 설정하기 위해 PassThru 매개 변수를 사용하는 trival이 아닌 예를 추가했습니다. – Rynant