我无法获取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-MailboxDatabase
cmdlet 而不是Get-MailboxDatabaseCopyStatus
命令:
您想获取AvailableNewMailboxSpace
参数的值还是磁盘的可用空间(磁盘可用空间)?
如果是前者,我认为你需要更换Get-MailboxDatabaseCopyStatus
cmdlet 与Get-MailboxDatabase -Status
cmdlet。如果是后者,请将AvailableNewMailboxSpace
cmdlet 与DiskFreeSpace
执行以下命令:
此外,cmdletValue-ToGB -Value
似乎不受 PowerShell 支持,我认为您可以尝试使用以下命令:
return [math]::Round(($_.AvailableNewMailboxSpace)/1GB,2) * $DBCopys
答案2
cmdlet 在函数或脚本根中按预期工作。问题仅发生在内联 powershell 表达式中。所以我通过避免使用内联表达式解决了这个问题。