在PowerShell中运行Get-MessageTrackingLog作为一项工作

我试图创build一个Exchange 2010脚本,将search每个传输服务器作为一项工作。 我尝试以下方法:

$transportserver = get-transportserver foreach ($ts in $transportserver) { $ts_name = $ts.name $s = New-PSSession -ComputerName $ts_name Invoke-Command -Session $s -Script { Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; Get-MessageTrackingLog -server $args[0] } -Args $ts_name } 

但是我得到的错误:

 Value cannot be null. Parameter name: serverSettings + CategoryInfo : NotSpecified: (:) [Get-MessageTrackingLog], ArgumentNullException + FullyQualifiedErrorId : System.ArgumentNullException,Microsoft.Exchange.Management.TransportLogSearchTasks.GetMessageTrackingLog 

我已经尝试了一些变化,如添加更多的参数,但它返回相同的错误。

剧本看起来很简单,所以我觉得你的问题在别处。 也许试试

 invoke-command -computername $srv {Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; Get-MessageTrackingLog} 

如果这个失败了,可能会用psExec fx来走向另一个解决scheme。 这只是从我的个人脚本快速复制/粘贴。

 $ps = new-object System.Diagnostics.Process $ps.StartInfo.Filename = "O:\pstools\psexec.exe" Foreach ($strComputer in $Servers) { $ps.StartInfo.Arguments = " \\" $ps.StartInfo.Arguments += $strComputer.Name $ps.StartInfo.Arguments += " gpupdate.exe /target:computer /force" $ps.start() $ps.WaitForExit() }