使用PoSH取值,奇怪的结果

Using PoSH to get a value, strange results

我正在使用 PoSH 向我们的 Exchange 服务器查询 return 用户最大的邮箱。

我的 PoSH 是:

$test = Get-MailboxDatabase MBX_* -Status | select Name,@{Name="NumberofUsers";Expression={(Get-Mailbox -resultsize unlimited -Database $_.name).Count}} | Sort -Property NumberofUsers | Select Name -First 1

这适用于控制台和 returns:

Name
----
MBX_2

然而,当我 运行 它在脚本中像这样并且 return 值时,它是这样的:

$test = Get-MailboxDatabase -Status MBX_*| select Name,@{Name="NumberofUsers";Expression={(Get-Mailbox -resultsize unlimited -Database $_.name).Count}} | Sort -Property NumberofUsers | Select Name -First 1
Write-Host "Using $test"

Using @<Name=MBX_2>

为什么它包含 @<Name=> 个字符,我该如何防止它这样做?我需要能够为我的脚本的下一部分获取 "MBX_2" 的 returned 值,我对如何处理这个感到困惑...

您正在选择单个 属性 对象,但仍传递一个对象。您需要做的是使用 Select-Object cmdlet 的 -ExpandProperty 参数。将您的 Select 命令更改为:

| Select -ExpandProperty Name -First 1

这应该会给你想要的结果。