AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1043008
Accepted
Michael
Michael
Asked: 2020-11-19 00:19:37 +0800 CST2020-11-19 00:19:37 +0800 CST 2020-11-19 00:19:37 +0800 CST

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

  • 772

我无法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 的一般行为还是我在这里做错了什么?

谢谢。

exchange powershell exchange-server
  • 2 2 个回答
  • 134 Views

2 个回答

  • Voted
  1. Ivan_Wang
    2020-11-19T21:52:00+08:002020-11-19T21:52:00+08:00

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

    你想得到AvailableNewMailboxSpace参数的值还是你的磁盘的可用空间(DiskFreeSpace)? 在此处输入图像描述

    如果是前者,我认为您需要将Get-MailboxDatabaseCopyStatuscmdlet替换为Get-MailboxDatabase -Statuscmdlet。如果是后者,请将AvailableNewMailboxSpacecmdlet替换为DiskFreeSpacecmdlet。

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

    return [math]::Round(($_.AvailableNewMailboxSpace)/1GB,2) * $DBCopys
    
    • 0
  2. Best Answer
    Michael
    2021-02-27T12:10:05+08:002021-02-27T12:10:05+08:00

    cmdlet 在函数或脚本根目录中按预期工作。该问题仅发生在内联 powershell 表达式中。所以我通过避免内联表达式来解决它。

    • 0

相关问题

  • 如何在使用 RPC over HTTPS 时停止 Outlook 2007 要求提供凭据

  • Exchange 备份的 NT 备份是否会使 Exchange 脱机?

  • 如何在 Exchange 2007 中设置资源邮箱日历的忙/闲权限?

  • Exchange 2007:将带有 SenderID 的邮件移动到垃圾邮件文件夹失败?

  • 如何使用 Exchange 2003 SP2 将垃圾邮件发送到个人垃圾文件夹?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve