格式表未生效(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 脚本