Exchange 命令行管理程序中的输出重定向

Exchange 命令行管理程序中的输出重定向

我有一些通过计划任务执行的脚本,并想为它们创建日志文件。

日志文件应该包含所有记录的警告,我想出了这种重定向方法:

$ Write-Warning "I'm a warning!"
WARNING: I'm a warning!
$ Write-Warning "I'm a warning!" 3>$logfile
$ # warning text present in $logfile

这可以按预期工作,但它不适用于 Exchange 命令行管理程序导入的模块:

$ Set-Mailbox $mailbox -HiddenFromAddressListsEnabled $true 3>$logfile
WARNING: The command completed successfully but no settings of 'Path/to/$mailbox' have been modified.
$

$logfile仍为空。

使用或重定向*>至也$null没有任何效果。

我怎样才能捕获这些警告?

答案1

将命令放入Invoke-Command使用参数中,并在使用该参数的同时-Session将连接的会话变量 [ ] 传递给您的 Exchange Server 。$session-WarningVariable

将 Exchange 命令放入其中-ScriptBlock { <Exchange commands> },您将能够捕获生成的任何警告消息,并将其Out-File保存到日志文件中。

电源外壳

$warning = @();
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchangesrv.domain.com/PowerShell/ -Authentication Kerberos;

Invoke-Command -Session $session -ScriptBlock {
    Set-Mailbox $args[0] -HiddenFromAddressListsEnabled $true;
    } -ArgumentList $mailbox -WarningVariable warning;


$warning | Out-File "c:\Logs\HiddenGALWarnings.txt" -Append;

笔记:尝试时Set-Mailbox $mailbox -HiddenFromAddressListsEnabled $true -WarningVariable $true,您可能会收到以下错误,原因是RestrictedLanguage mode

A variable that cannot be referenced in restricted language mode or a Data section is being referenced. Variables that can be referenced include the following: $PSCulture, $PSUICulture, 
$true, $false, and  $null.
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : VariableReferenceNotSupportedInDataSection
    + PSComputerName        : exchangesrv.domain.com

支持资源

相关内容