Powershell
函式或表達式中帶有 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
或0
(如果 DataType 為 Int)。函式/表達式中的對像中沒有數據$DBCopys
,即使我嘗試接收完整的對象(不僅僅是計數)。腳本根目錄或 Powershell 控制台上的相同 CmdLet 直接按預期工作。
這是此 cmdlet 的一般行為還是我在這裡做錯了什麼?
謝謝。
cmdlet 在函式或腳本根目錄中按預期工作。該問題僅發生在內聯 powershell 表達式中。所以我通過避免內聯表達式來解決它。
根據我的知識和測試,該**
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,我認為您可以嘗試使用以下命令:return [math]::Round(($_.AvailableNewMailboxSpace)/1GB,2) * $DBCopys