Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
无法使用带管道变量的-filter子句在Powershell中运行Get-CASMailbox_Powershell_Exchange Server_Exchange Server 2007 - Fatal编程技术网

无法使用带管道变量的-filter子句在Powershell中运行Get-CASMailbox

无法使用带管道变量的-filter子句在Powershell中运行Get-CASMailbox,powershell,exchange-server,exchange-server-2007,Powershell,Exchange Server,Exchange Server 2007,我在Exchange cmdlet Get-CASMailbox的语法方面遇到一些问题 我在2007年的环境中运行,并在PowerGUI 2.4、3.0和PS ISE 2.0中进行了测试 用于演示的示例代码: [String[]] $MailServerList = @('IP-0A207B07') $MailServerList | %{ Get-CASMailbox -ResultSize:10 -Filter {ServerName -eq $_} } 在

我在Exchange cmdlet Get-CASMailbox的语法方面遇到一些问题

我在2007年的环境中运行,并在PowerGUI 2.4、3.0和PS ISE 2.0中进行了测试

用于演示的示例代码:

[String[]] $MailServerList = @('IP-0A207B07')

$MailServerList | %{            
Get-CASMailbox -ResultSize:10 -Filter {ServerName -eq $_}   
}
在本例中,只有一个邮件服务器。在调用获取CASMailbox的过程中,管道操作符$是IP-0A207B07,并且$GetType()确认它是一个字符串。如果此行运行,我将得到以下错误:


Get-CASMailbox:无法将参数“筛选器”绑定到目标。异常设置“筛选器”:“无法强制转换'System.Management.Automa'类型的对象” 输入'System.String' 在C:\Users\erawlins\Desktop\MailboxFilterBug.ps1:7 char:38
+Get CASMailbox-ResultSize:10-Filter您正在向Filter参数传递一个scriptblock,并且正在引用一个自动变量($)。在计算scriptblock时,它可能位于定义$的其他代码中。使用具有嵌套作用域的自动变量时务必小心。

您正在向筛选器参数传递脚本块,并且正在引用自动变量($)。在计算scriptblock时,它可能位于定义$的其他代码中。使用嵌套作用域的自动变量时务必小心。

尝试以下方法:

$MailServerList | Foreach-Object { Get-CASMailbox -Filter "ServerName -eq  '$_'" }
试试这个:

$MailServerList | Foreach-Object { Get-CASMailbox -Filter "ServerName -eq  '$_'" }

谢伊,我试过你的语法了,确实有效。我以前尝试过以下方法,但没有$MailServerList |%{Get CASMailbox-Filter{ServerName-eq“${”}查看上面Jason的答案,您的示例是管道变量包含在脚本块中的问题?这是否意味着scriptblock中的任何代码都会在稍后的某个时间进行求值,并且$\当时超出了范围?通过删除脚本块,它会立即对其进行计算?我相信这就是发生的情况,这就是为什么我使用了字符串过滤器,以便在值传递之前立即展开。Shay,我尝试了你的语法,这确实有效。我以前尝试过以下方法,但没有$MailServerList |%{Get CASMailbox-Filter{ServerName-eq“${”}查看上面Jason的答案,您的示例是管道变量包含在脚本块中的问题?这是否意味着scriptblock中的任何代码都会在稍后的某个时间进行求值,并且$\当时超出了范围?通过删除脚本块,它会立即对其进行计算?我相信这就是正在发生的事情,这就是为什么我使用字符串过滤器,以便在值传递之前立即展开它。