Запуск Get-MessageTrackingLog как работа в Powershell
Я пытаюсь создать сценарий 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()
}