格式表未生效(Exchange - powershell)

Posted

技术标签:

【中文标题】格式表未生效(Exchange - powershell)【英文标题】:Format-Table not taking effect (Exchange - powershell) 【发布时间】:2021-12-17 00:51:48 【问题描述】:

首先抱歉,如果我的英语不是最好的。但我会尽可能详细地解释我的问题

我遇到了一个问题,我无法让Format-Table 影响我给它的输出。

下面是我遇到 atm 问题的部分。

cls

$TotalSize = $($mailboxes. @name = ”TotalItemSize (GB)”; expression =  [math]::Round((($_.TotalItemSize.Value.ToString()).Split(“(“)[1].Split(” “)[0].Replace(“,”, ””) / 1GB), 2)  );
$UserN = $($mailboxes.DisplayName)
$itemCount = $($mailboxes.ItemCount)
$LastLogonTime = $($mailboxes.ItemCount)

$allMailboxinfo = @(
    #lager dataen som skal inn i et objekt
    @Username= $UserN; ItemCount = $itemCount; LastLogonTime = $($mailboxes.ItemCount); Size = $TotalSize) | %  New-Object object | Add-Member -NotePropertyMembers $_ -PassThru 

$Table = $allMailboxinfo  | Format-Table | Out-String

$Table

这个输出在表格的每个标题下方给了我几乎看起来像 json 语法的内容。

Username                                                                LastLogonTime                   ItemCount                       Size                           
--------                                                                -------------                   ---------                       ----                           
username1, username2,username3,userna... $null, $null, $null, $null... $null, $null, $null, $null... $null, $null, $null, $null...

自己运行命令似乎可以工作。像$mailboxes.DisplayName 给出了我想要的显示名称的确切数据。即使是表格格式。

我以这种方式制作表格而不是仅使用select-object 的原因是因为我稍后将合并几个表格。使用下面脚本中的逻辑。

cls

$someData = @(
    @Name = "Bill"; email = "email@domain.com"; phone = "12345678"; id = "043546" ) | %  New-Object object | Add-Member -NotePropertyMembers $_ -PassThru 

$moreData = @(
    @Name = "Bill"; company = "company 04") | %  New-Object object | Add-Member -NotePropertyMembers $_ -PassThru 

$Merge = @(
    #plots the data into a new table
    @Name = $($someData.Name); e_mail = $($someData.email); phone = $($someData.phone); id = $($someData.id); merged = $($moreData.company) ) | %  New-Object object | Add-Member -NotePropertyMembers $_ -PassThru 


       #formatting table
$Table = $Merge | Format-Table | Out-String

#print table
$Table

如果你想知道我在做什么。 我的目标,总而言之。是一张使用 Exchange 信息的表格;

DisplayName、TotalItemSize(GB)、ItemCount、LastLogonTime、E-mail 地址、归档 + Maxquoata、邮箱配额。

【问题讨论】:

【参考方案1】:

您正在创建一个对象,其中每个属性都包含来自原始邮箱对象数组的属性值数组。

相反,每个邮箱创建 1 个新对象:

# construct output objects with Select-Object
$allMailBoxInfo = $mailboxes |Select @Name='Username';Expression='DisplayName',ItemCount,@Name='LastLogonTime';Expression='ItemCount',@Name='Size';Expression=[math]::Round((($_.TotalItemSize.Value.ToString()).Split("(")[1].Split(" ")[0].Replace(",", "") / 1GB), 2) 

# format table
$Table = $allMailBoxInfo | Format-Table | Out-String

# print table
$Table

【讨论】:

哦,我的描述中可能没有说清楚。但我没有使用“合并”脚本中的任何数据。我稍后只使用逻辑来添加其他表中的部分。就像我在问题的最底部写的那样。 @walter 我的回答与您将数据与其他数据集合并的计划并不冲突。如果需要,您可以稍后通过管道添加到另一个 ...| Select-Object 语句来继续添加“列” 好的,我试试看,谢谢! @walter 您可能希望确保您还从原始邮箱中选择了一些不同的标识属性(如电子邮件地址或用户主体名称) - 这将更容易与其他数据集关联稍后

以上是关于格式表未生效(Exchange - powershell)的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP 使用 Exchange 管理单元执行 powershell 脚本

Exchange 2016邮箱配额调整后的生效时间如何修改?

PrimeNg 表未按角度对类数组进行排序

材料ui表未更新

PowerShe 命令行调试指引(转)

PowerShe 使用证书签名 ll脚本