首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在powershell哈希表中添加-confirm:$false?

如何在powershell哈希表中添加-confirm:$false?
EN

Stack Overflow用户
提问于 2021-08-18 12:10:17
回答 2查看 639关注 0票数 1
代码语言:javascript
复制
$cmdlet="Disable-RemoteMailBox"
$arguments = @{Identity=$identity;DomainController=$domaincontroller;Archive=""}
$command_args=""
$arguments.keys | ForEach-Object{
    $message = '-{0} {1} ' -f $_, $arguments[$_]
        $command_args+= $message
}
$result=& $cmdlet @arguments 2>&1

最后将执行以下操作:

代码语言:javascript
复制
Disable-RemoteMailBox -Identity abc@corp.com -DomainController dc.corp.local -Archive 

但我需要加一个确认:$false

代码语言:javascript
复制
Disable-RemoteMailBox -Identity abc@corp.com -DomainController dc.corp.local -Archive -Confirm:$false

如何在哈希表中添加这个$false?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-18 12:13:56

从以下位置更改$arguments哈希表:

代码语言:javascript
复制
$arguments = @{Identity=$identity;DomainController=$domaincontroller;Archive=""}

代码语言:javascript
复制
$arguments = @{Identity=$identity;DomainController=$domaincontroller;Archive="";Confirm=$false}
票数 1
EN

Stack Overflow用户

发布于 2021-08-18 13:03:32

添加到马蒂亚斯的简明答案

除了确认功能与$ConfirmPreference首选项变量的集成外,-Confirm公共参数可以看作是一个简单的开关参数。它要么存在,要么不存在。但是,PowerShell的内部类型转换引擎将评估一个[Switch],更像一个[Boolean],如果您将[Bool]转换为[Switch],您可以看到这一点。

[Switch]$true[Switch]$false将分别返回IsPresent真/假。

如果在散列表中指定Confirm = $false,则在参数绑定期间发生的类型强制(强制转换)将正确处理它。对于任何其他开关参数,甚至是您在自定义函数中定义的自定义参数,也是如此。当您需要计算函数内部的开关参数时,此类型转换也是可执行的。

如果我指定一个名为$Delete的开关参数

代码语言:javascript
复制
Param( [Switch]$Delete )

然后,在内部,我可以执行如下逻辑:

代码语言:javascript
复制
If( $Delete -eq $true ) {
    # Delete the file or whatever...
}

当然,您可以缩短为:

代码语言:javascript
复制
If( $Delete ) {
    # Delete the file or whatever...
}

但是,您不需要深入了解PowerShell的类型转换系统,就可以在散列表中使用布尔值或开关参数。它被记录在溅溅中。前几行将解释开关参数的散列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68832121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档