在 Powershell 中将 Get-MessageTrackingLog 作为作业运行

在 Powershell 中将 Get-MessageTrackingLog 作为作业运行

我正在尝试创建一个 Exchange 2010 脚本,该脚本将搜索每个传输服务器作为一项作业。我尝试以下操作:

$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

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

答案1

该脚本看起来很简单,所以我觉得你的问题出在其他地方。也许可以试试

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

如果失败,也许可以使用 psExec fx 采取另一种解决方案。这只是从我的个人脚本中快速复制/粘贴。

$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()
}

相关内容