Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何使用变量在新DynamicDistributionGroup上设置-RecipientFilter_Powershell - Fatal编程技术网

Powershell 如何使用变量在新DynamicDistributionGroup上设置-RecipientFilter

Powershell 如何使用变量在新DynamicDistributionGroup上设置-RecipientFilter,powershell,Powershell,我想通过csv导入创建一些动态通讯组列表。我希望-RecipientFilter使用csv数据中的值。所以,我正在尝试解决语法问题,但运气不好。我的实际过滤器将有几个部分,但我甚至不能让这个简单的工作 通过变量设置-Name可以正常工作 $dgName = "AAC" $dgCode1 = "QQ" New-DynamicDistributionGroup -Name $dgName -RecipientFilter { ExtensionCustomAttribute1 -eq 'QQ'

我想通过csv导入创建一些动态通讯组列表。我希望-RecipientFilter使用csv数据中的值。所以,我正在尝试解决语法问题,但运气不好。我的实际过滤器将有几个部分,但我甚至不能让这个简单的工作

通过变量设置-Name可以正常工作

$dgName = "AAC"
$dgCode1 = "QQ"

New-DynamicDistributionGroup -Name $dgName  -RecipientFilter { ExtensionCustomAttribute1 -eq 'QQ'  }
设置-RecipientFilter表达式不起作用

New-DynamicDistributionGroup -Name $dgName  -RecipientFilter { ExtensionCustomAttribute1 -eq $dgCode1  }
当我在过滤器中以“$dgCode1”结束时

我尝试调用表达式:

$myCommand = "New-DynamicDistributionGroup -Name $dgName -RecipientFilter { ExtensionCustomAttribute1 -eq $dgCode1 }"

Invoke-Expression $myCommand
但该抛出无法将参数“RecipientFilter”绑定到目标。异常设置RecipientFilter:筛选器语法无效。有关筛选器参数语法的说明,请参阅命令帮助

我已经读了所有我能找到的东西,但找不到一个方法来做到这一点。我甚至尝试了字符串连接:

$myCommand = "New-DynamicDistributionGroup -Name $dgName  -RecipientFilter { ExtensionCustomAttribute1 -eq " + $dgCode1 + " }"
但这仍然抛出了无效筛选器语法错误

请问怎么做?我对PowerShell很陌生

谢谢,默里

编辑:谢谢你,我很荣幸

一个更完整的例子可以复制我试图实现的线条喙的易读性:

$dgName = "Class2-3Parents"
$dgCode1 = "P"
$dgSubCode1 = "Class2"
$dgSubCode2 = "Class3"

New-DynamicDistributionGroup -Name $dgName -RecipientFilter
"ExtensionCustomAttribute1 -eq '$dgCode1' -and ( ExtensionCustomAttribute2 -eq '$dgSubCode1' -or ExtensionCustomAttribute2 -eq '$dgSubCode2' ) "
结果将生成以下内容的筛选器:

((ExtensionCustomAttribute1 -eq 'P') -and (((ExtensionCustomAttribute2 -eq 'Class2') -or (ExtensionCustomAttribute2 -eq 'Class3')))) ...
非常感激。
Murray

这似乎是对筛选器使用脚本块表示法的问题。所有Microsoft帮助页都显示使用脚本块{}作为Exchange命令使用的OPATH筛选器和ActiveDirectory模块使用的Active Directory筛选器,这是一种不正确的做法,因为它们不是脚本块。以下几点会有更好的结果

New-DynamicDistributionGroup -Name $dgName -RecipientFilter "ExtensionCustomAttribute1 -eq '$dgCode1'"

某些脚本块将有自己的作用域。该作用域不知道在该作用域之外创建的变量的任何信息。

这似乎是使用脚本块表示法进行筛选的问题。所有Microsoft帮助页面都显示为这些筛选器使用脚本块{},这通常是不正确的做法。看看使用新的DynamicDistributionGroup-Name$dgName-RecipientFilter扩展定制属性1-eq'$dgCode1'是否有更好的效果。先生,你真是个天才!对就这样。我显然需要阅读有关脚本块的内容,以理解语法的含义和您编写的内容。我测试了我需要创建的过滤器,一切正常。请参见我的问题,请编辑上面的内容。:-:-我编辑了我的问题,而不是回答它,因为当我这样做时,版主似乎会删除我的帖子!请添加您的答案,以便我可以接受它。再次感谢。