Exchange Shell - SubjectOrBodyContainsWords

时间:2015-04-27 13:40:09

标签: powershell exchange-server

我正在尝试为每个脚本创建一个规则,但我无法继续,因为我似乎达到了太高的价值......

  

[PS] C:\ Users \ XXX \ Desktop> New-InboxRule -Mailbox“Daniel.XXX”   -Name“Test”-SubjectOrBodyContainsWords {“Value1”,“Value2”,“Value3”,“Value4”,“Value5”,“Value6”,“Value7”,“Value8”,“Value9”,“Value10” “Value11”, “Value12”, “Value13”, “Value14”, “Value15”, “Value16”, “Value17”, “Value18”, “alue19”, “Value20”, “Value21”, “Value22”,” Value23" , “Value24”, “Value25”, “alue26”, “Value27”, “Value28”, “Value29”, “值30”, “Value31”, “VALUE32”, “alue33”, “Value34”, “Value35” “Value36”, “Value37”, “alue38”, “Value39”,​​ “Value40”, “Value41”, “Value42”, “Value43”, “Value44”, “Value45”, “Value46”, “Value47”,” Value48" , “Value49”, “alue50”, “Value51”, “Value52”, “Value53”, “Value54”, “Value55”, “Value56”, “Value57”, “Value58”}   -ApplyCategory“Common CA”-WHATIF

     

Invoke-Command:无法将参数'SubjectOrBodyContainsWords'绑定到   目标。例外设置“SubjectOrBodyContainsWords”:“The   物业的长度太长。 最大长度为255和   提供的值的长度为570 。“AtC:\ Users \ XXX \ AppData \ Roaming \ Microsoft \ Exchange \ RemotePowerShell \ XXXXXXXXXXXXX.psm1:20346   焦炭:29   + $ scriptCmd = {& <<<< $ script:InvokeCommand`       + CategoryInfo:WriteError:(:) [New-InboxRule],ParameterBindingException       + FullyQualifiedErrorId:ParameterBindingFailed,Microsoft.Exchange.Management.RecipientTasks.NewInboxRule

如果我要设置具有可接受值的规则并在Exchange控制面板中查看它,我只会将文本视为一个值(一个大字符串)而不是多个值(如果我要创建它则显示通过GUI)......

我做错了什么?

1 个答案:

答案 0 :(得分:1)

根据about_Parsing帮助文件:

  

处理命令时,Windows PowerShell解析器会运行   在表达模式或参数模式中:

- In argument mode, each value is treated as an expandable string 
  unless it begins with one of the following special characters: dollar
  sign ($), at sign (@), single quotation mark ('), double quotation
  mark ("), or an opening parenthesis (().

由于您对SubjectOrBodyContainsWords参数的参数以{开头,因此解析器会将整个列表视为一个大字符串。只需删除大括号(或用常规括号替换):

New-InboxRule -Mailbox 'Daniel.XXX' -Name 'Test' -SubjectOrBodyContainsWords ("Value1","Value2","Value3","Value4","Value5","Value6","Value7","Value8","Value9","Value10","Value11","Value12","Value13","Value14","Value15","Value16","Value17","Value18","alue19","Value20","Value21","Value22","Value23","Value24","Value25","alue26","Value27","Value28","Value29","Value30","Value31","Value32","alue33","Value34","Value35","Value36","Value37","alue38","Value39","Value40","Value41","Value42","Value43","Value44","Value45","Value46","Value47","Value48","Value49","alue50","Value51","Value52","Value53","Value54","Value55","Value56","Value57","Value58")

为了使命令更具可读性,我可能事先将可能的值分配给数组:

$SOBCWords = @(
"Value1",
"Value2",
"Value3",
# etc
"Value56",
"Value57",
"Value58"
)
New-InboxRule -Mailbox "Daniel.XXX" -Name "Test" -SubjectOrBodyContainsWords $SOBCWords -ApplyCategory "Common CA" -WHATIF