【发布时间】:2015-06-24 18:07:29
【问题描述】:
我正在尝试对我的 Exchange 2010 服务器上的一组邮箱执行批量操作。为了限制我需要操作的数字框,我想过滤结果。我知道我需要处理的那些是在 2015 年 1 月 1 日之后创建的,所以我将其作为过滤器值提供(有效):
$boxes = Get-Mailbox -filter { whenCreated -gt '2015-01-01' }
我希望稍后能够重用我的脚本,所以我尝试将其设置为采用参数,但它返回所有框(不起作用)...
$filterdate = '2015-01-01'; $boxes = Get-Mailbox -filter { whenCreated -gt $filterdate }
我的猜测是,当我提供字符串文字与提供字符串变量时,-Filter 会进行某种隐式类型转换
如何为 -Filter 提供变量?
编辑:
这也返回一个未过滤的列表:
$filterdate = [System.DateTime]'2015-01-01'; get-mailbox -filter { whencreated -gt $filterdate }
导致错误:
$filterdate = '2015-01-01'; get-mailbox -filter { whencreated -gt "$filterdate" }
【问题讨论】:
-
尝试将值设为实际日期:
$filterdate = Get-Date '2015-01-01' -
@AnsgarWiechers get-date 产生相同的结果
-
尝试扩展字符串?
{ whenCreated -gt "$filterdate" } -
无法将参数“过滤器”绑定到目标。异常设置“Filter”:“值“$filterdate”无法转换为 System.Nullable`1[System.DateTime] 类型。”
-
不是因为脚本块的原因吗?该变量在该范围内没有值。使用带引号的字符串并删除括号。
-filter "whencreated -gt '$filterdate'"
标签: powershell scope