PowerShell中如何将变量作为函数参数传入?
PowerShell动态参数名传入解决方案
你遇到的“找不到接受参数的位置参数”错误,根源是PowerShell无法直接识别-$CustomAtt这种动态拼接的参数名写法。要实现动态传递参数名,必须用**参数展开(Splatting)**机制。
修正步骤
- 先构建包含动态参数的哈希表,将参数名(变量拼接结果)作为键,参数值作为对应的值
- 使用
@符号展开哈希表,作为Set-Mailbox的参数
修正后的代码
$Var = Read-host "enter Attribute number" $CustomAtt = "CustomAttribute$Var" # 构建动态参数哈希表 $setMailboxParams = @{ $CustomAtt = "TestTest" } Get-Mailbox -Identity $Email | Set-Mailbox @setMailboxParams
补充说明
如果需要同时传递其他固定参数,也可以直接添加到哈希表中,比如:
$setMailboxParams = @{ Identity = $Email $CustomAtt = "TestTest" } # 此时无需管道,直接执行 Set-Mailbox @setMailboxParams
内容的提问来源于stack exchange,提问作者Kaby26
相关产品推荐
相关产品推荐

