函数或表达式中 Get-MailboxDatabaseCopyStatus 的结果为空/零

函数或表达式中 Get-MailboxDatabaseCopyStatus 的结果为空/零

我无法获取Get-MailboxDatabaseCopyStatus函数或表达式中的 Exchange 管理 CmdLet(OnPremises)的任何结果。

function Get-DAGDatabaseCopys ($Identity) {
   # Neither this line:
   #[Int]$DBCopys = Invoke-Command { @(Get-MailboxDatabaseCopyStatus -Identity $Identity).count }
   # Or this line works:
   $DBCopys = @(Get-MailboxDatabaseCopyStatus -Identity $Identity).count
   return $DBCopys
}

用法:

Get-DAGDatabaseCopys -Identity "DatabaseName"

表达式示例:

$strMasterType = "DatabaseAvailabilityGroup"
$expDatabaseSpaceGB   = @{Expression={if(($_.MasterType -eq $strMasterType) -and ($IncludeDagCopys)){
    start-sleep 1 
    $DBCopys = @(Get-MailboxDatabaseCopyStatus -Identity $_).count
    return [math]::Round((Value-ToGB -Value $_.AvailableNewMailboxSpace),2) * $DBCopys
};Label="DatabaseWhiteSpaceSizeGB"}

用法:

$MailboxDBStatus      = Get-MailboxDatabase -Status | select ServerName, Name, MasterType, $expDatabaseSpaceGB

函数或表达式的返回值将始终为empty或(如果 DataType 为 Int)。即使我尝试接收完整对象(而不仅仅是计数),函数/表达式内的对象0中也没有数据。$DBCopys

脚本根目录或 Powershell 控制台上的相同 CmdLet 直接按预期工作。

这是该 cmdlet 的一般行为吗?还是我在这里做错了什么?

谢谢。

答案1

根据我的知识和测试,AvailableNewMailboxSpace参数仅用于Get-MailboxDatabasecmdlet 而不是Get-MailboxDatabaseCopyStatus命令: 在此处输入图片描述

您想获取AvailableNewMailboxSpace参数的值还是磁盘的可用空间(磁盘可用空间)? 在此处输入图片描述

如果是前者,我认为你需要更换Get-MailboxDatabaseCopyStatuscmdlet 与Get-MailboxDatabase -Statuscmdlet。如果是后者,请将AvailableNewMailboxSpacecmdlet 与DiskFreeSpace执行以下命令:

此外,cmdletValue-ToGB -Value似乎不受 PowerShell 支持,我认为您可以尝试使用以下命令:

return [math]::Round(($_.AvailableNewMailboxSpace)/1GB,2) * $DBCopys

答案2

cmdlet 在函数或脚本根中按预期工作。问题仅发生在内联 powershell 表达式中。所以我通过避免使用内联表达式解决了这个问题。

相关内容