我正在尝试停用" Email Apps
" Azure admin center
上的功能,用于登机脚本。我不确定是否可以将一些参数传递到foreach
循环,下面是代码。我已经定义了param并且没有定义param的代码。
param(
[parameter]$DisableApps
)
$DisableApps = ("OWAEnabled" , "EwsEnabled" , "PopEnabled")
foreach ($i in $DisableApps){Set-CASMailbox "Sahand.Test" $i $false}
我得到的错误是 -
无法找到接受参数的位置参数 ' -OWAEnabled&#39 ;. + CategoryInfo:InvalidArgument:(:) [Set-CASMailbox],ParameterBindingException + FullyQualifiedErrorId:PositionalParameterNotFound,Set-CASMailbox + PSComputerName:outlook.office365.com
答案 0 :(得分:3)
我认为您可能正在寻找的是splatting
如果您在哈希表中定义参数,则可以在将@
用作splat运算符时将它们作为参数传递。 (注意@
除了作为splat运算符之外还有其他用途。)
param(
[string]$Identity = "Sahand.Test",
[switch]$DisableApps
)
If ($DisableApps) {
$CASMailboxParams = @{
Identity = $Identity
OWAEnabled = $False
EwsEnabled = $False
PopEnabled = $False
}
Set-CASMailbox @CASMailboxParams
} else {
Set-CASMailbox $Identity
}
然后,通过使用脚本参数,您可以使用-DisableApps
将这些参数设置为false。
.\examplescript.ps1 -Identity 'differentuser' -DisableApps
答案 1 :(得分:0)
param([bool]$CASMailboxParams, [string]$User)
$User = "Sahand.Test"
$CASMailboxParams = @{
OWAEnabled = $False
EwsEnabled = $False
PopEnabled = $False
}
Set-CASMailbox -Identity $User @CASMailboxParams
Get-CASMailbox $User
这将允许您通过命令传递参数,并在最后检查casmailbox。注意:此脚本适用于Exchange Powershell。