我无法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
或0
(如果 DataType 为 Int)。函数/表达式中的对象中没有数据$DBCopys
,即使我尝试接收完整的对象(不仅仅是计数)。
脚本根目录或 Powershell 控制台上的相同 CmdLet 直接按预期工作。
这是此 cmdlet 的一般行为还是我在这里做错了什么?
谢谢。
根据我的知识和测试,该
AvailableNewMailboxSpace
参数仅用于Get-MailboxDatabase
cmdlet 而不是Get-MailboxDatabaseCopyStatus
cmdlet:你想得到
AvailableNewMailboxSpace
参数的值还是你的磁盘的可用空间(DiskFreeSpace)?如果是前者,我认为您需要将
Get-MailboxDatabaseCopyStatus
cmdlet替换为Get-MailboxDatabase -Status
cmdlet。如果是后者,请将AvailableNewMailboxSpace
cmdlet替换为DiskFreeSpace
cmdlet。此外,
Value-ToGB -Value
PowerShell似乎不支持该cmdlet,我认为您可以尝试使用以下命令:cmdlet 在函数或脚本根目录中按预期工作。该问题仅发生在内联 powershell 表达式中。所以我通过避免内联表达式来解决它。