Ang*_*wal 11 powershell powershell-2.0
参考此链接,我试图在我的脚本中引入详细模式.
当我有一个像这样定义的函数时 -
function TestVerbose
{
param(
[switch]$verbose,
[Parameter(Mandatory = $True)]
$p1
)
if($verbose)
{
Write-Verbose "Verbose Mode"
}
}
Get-Help TestVerbose
Run Code Online (Sandbox Code Playgroud)
我收到以下错误 -
Get-Help:为命令多次定义名为'Verbose'的参数.在行:12 char:9 + Get-Help <<<< TestVerbose + CategoryInfo:MetadataError:(:) [Get-Help],MetadataException + FullyQualifiedErrorId:ParameterNameAlreadyExistsForCommand,Microsoft.PowerShell.Commands.GetHelpCommand
但是,如果我定义这样的函数[删除参数强制属性],它工作正常
function TestVerbose
{
param(
[switch]$verbose,
$p1
)
if($verbose)
{
Write-Verbose "Verbose Mode"
}
}
Get-Help TestVerbose
Run Code Online (Sandbox Code Playgroud)
知道为什么会出现这种行为吗?我想保留强制切换,并希望用户执行我的功能 -
TestVerbose -verbose
Jam*_*ran 21
您似乎正在使用PoweShell v2,其中保留了Verbose(以及debug,whatif等)并自动为您提供了它们的功能.该功能已经存在,而不是编写自己的"详细"检测开关.在详细的情况下,您不必在参数声明中指定它,其他参数如whatif需要特殊的synatax.
C:\Users\james> function testverbose{
>> param(
>> [Parameter(Mandatory = $True)]
>> $bar
>> )
>>
>> Write-Verbose "VERBOSE!"
>> $bar
>> }
>>
C:\Users\james> testverbose -bar "woot"
woot
C:\Users\james> testverbose -bar "woot" -Verbose
VERBOSE: VERBOSE!
woot
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6555 次 |
| 最近记录: |