我正在尝试获取Exchange数据库状态以及测试Outlook Web服务。
要获取现有Exchange数据库的状态,我有以下代码:
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
. .\config.ps1
$body +=Get-MailboxDatabase | Get-MailboxDatabaseCopyStatus | sort @{expression='Status';Descending=$true},@{expression='name';ascending=$true} | ft name,status,contentindexstate | Out-string
Write-Output $body
其中 config.ps1 是我的配置文件,其中包含交换服务器的详细信息
现在,在此之后,我找到了测试Outlook Web服务的命令,其中包含以下内容:
Test-OutlookWebServices -Identity:holly@contoso.com
我想尝试使用分号在powershell中链接命令。但不幸的是,我无法尝试,因为我的环境还没有准备好。
那么,我可以这样做:
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
. .\config.ps1
$body +=Get-MailboxDatabase | Get-MailboxDatabaseCopyStatus | sort @{expression='Status';Descending=$true},@{expression='name';ascending=$true} | ft name,status,contentindexstate | Out-string; Test-OutlookWebServices -Identity:holly@contoso.com
Write-Output $body
这是正确的方法吗?如果没有,我应该如何在第一个命令中包含第二个命令才能实现此目的? 我希望结果都存储在 $ body 中并打印出来。
答案 0 :(得分:1)
通过;
分隔的一行中执行多个命令不是链接命令,而是一个接一个地执行它们。将它们放在不同的行上会产生同样的效果。
相反,你应该像第一个命令那样将第二个命令Test-OutlookWebServices -Identity:holly@contoso.com
的结果也保存到$body
变量:
$body = @();
$body += =Get-MailboxDatabase | Get-MailboxDatabaseCopyStatus | sort @{expression='Status';Descending=$true},@{expression='name';ascending=$true} | ft name,status,contentindexstate | Out-string;
$body += Test-OutlookWebServices -Identity:holly@contoso.com:
Write-Output $body;
通过这个,您可以通过一个变量$body
输出两个命令的结果,这是一个Object[]
数组,每个数组项都保存一个命令的响应。