我有这个 powershell 命令来查找我的每个 Exchange 数据库中的空格,但是我无法让它通过批处理运行。
这是确认工作的shell命令:
get-mailboxdatabase -status |
select name,
@{Name="DataBaseSize";Expression={ "{0:N2} GB" -f (($_.DatabaseSize.ToBytes()) / 1gb) }},
@{Name="AvailableNewMailboxSpace";Expression={ "{0:N2} GB" -f(($_.AvailableNewMailboxSpace.ToBytes()) / 1gb) }},
@{Name="Difference";Expression={ "{0:N2} GB" -f (($_.DatabaseSize.ToBytes() - $_.AvailableNewMailboxSpace.ToBytes()) / 1gb) }}
这是运行 Shell 命令的批处理:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ". 'D:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto;
我认为 shell 命令中的字符不与批处理合作,并"^"
在失败的地方尝试了它们。任何帮助,将不胜感激。我对批处理和powershell都很陌生,所以请用小词:)
新信息:您好,感谢您的帮助。要回答你的第一个问题,即我为什么要尝试批量执行此操作,因为这只是我要完成的步骤之一。我希望这个 powershell 命令输出到一个 .txt 文档,这样我就可以对它运行一个 FOR 循环并将参数写入一个 html 文件,然后每天将它发送给我的 IT 团队以监控空白的增长。此外,我收到的错误代码与您的假设无关,我很抱歉没有包括它们。我得到的错误代码是:Unexpected token ':N2' in expression or statement。当我从命令中删除“:N2”时,它会抱怨“GB”,最后当我删除“GB”时,它会抱怨“DataBaseSize”一词。所以我会在接下来的几个小时里在这里尝试你的解决方案,
新错误:
使用 Beavels 建议运行它后,我收到以下错误:
C:\temp2>Whitespace.bat 术语“get-mailboxdatabase”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。
At C:\temp2\Whitespace.ps1:1 char:20
+ get-mailboxdatabase <<<< -status |select name, @{Name="DataBaseSize";Express
ion={ "{0:N2} GB" -f (($_.DatabaseSize.ToBytes()) / 1gb) }}, @{Name="AvailableN
ewMailboxSpace";Expression={ "{0:N2} GB" -f(($_.AvailableNewMailboxSpace.ToByte
s()) / 1gb) }}, @{Name="Difference";Expression={ "{0:N2} GB" -f (($_.DatabaseSi
ze.ToBytes() - $_.AvailableNewMailboxSpace.ToBytes()) / 1gb) }}
+ CategoryInfo : ObjectNotFound: (get-mailboxdatabase:String) [],
CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
它抱怨 get-mailboxedatabase 这个术语,但这是一个 CDMLET。啊....
约瑟夫
C:\temp2>。'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps 1' '。不被识别为内部或外部命令、可运行程序或批处理文件。
C:\temp2>Connect-ExchangeServer -auto 'Connect-ExchangeServer' 不是内部或外部命令、可运行程序或批处理文件。
C:\temp2>$properties = @( '$properties' 不是内部或外部命令、可运行程序或批处理文件。
C:\temp2>"name" '"name"' 不是内部或外部命令、可运行程序或批处理文件。'{Name' 不是内部或外部命令、可运行程序或批处理文件。'{Name' 不是内部或外部命令、可运行程序或批处理文件。'{Name' 不是内部或外部命令、可运行程序或批处理文件。
C:\temp2># 您可能希望将此文件放在文件服务器上的某个位置 '#' 未被识别为内部或外部命令、可运行程序或批处理文件。
C:\temp2>$pathToFile = "\server\share\Some\Path\To\File.html" '$pathToFile' 不是内部或外部命令、可运行程序或批处理文件。
C:\temp2>$data = 获取邮箱数据库 -status | 选择 $properties | 排序对象名称 | 转换为 Html | Set-Content $pathToFile - '$data' 不是内部或外部命令、可运行程序或批处理文件。
我可能会将此数据库脱机并进行碎片整理以释放空间。而不是试图从这个疯狂的想法中监控它。