powershell - 在变量 Powershell 中传递参数
问题描述
我正在尝试为离线脚本禁用“ Email Apps
”功能。Azure admin center
我不确定是否可以将一些参数传递到foreach
循环中,下面是代码。我已经运行了定义了参数但没有定义参数的代码。
param(
[parameter]$DisableApps
)
$DisableApps = ("OWAEnabled" , "EwsEnabled" , "PopEnabled")
foreach ($i in $DisableApps){Set-CASMailbox "Sahand.Test" $i $false}
我得到的错误是 -
找不到接受参数“-OWAEnabled”的位置参数。+ CategoryInfo:InvalidArgument:(:) [Set-CASMailbox],ParameterBindingException + FullyQualifiedErrorId:PositionalParameterNotFound,Set-CASMailbox + PSComputerName:outlook.office365.com
解决方案
我认为您可能正在寻找的是所谓的飞溅
如果您在哈希表中定义参数,则可以在@
用作 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
推荐阅读
- postgresql - 无法写入 postgres 数据库 Heroku
- python - 包可以跨 Anaconda 环境共享吗?
- php - 团队的Mysql表,选择队长和另一名球员
- java - 我如何多次设置标题工具栏?
- java - 从静态 AsyncTask 方法中访问 Android UI 元素
- log4j - Log4j1.x -> Log4j2 属性文件到 xml
- node.js - moment.js 以 TZ 格式格式化日期
- php - 获取 groupBy 中的最后一项
- android - 在 Android 意图中传递模拟类
- php - 将 b64 图片支持添加到 HTML Purifier 的默认白名单中