c# - 从每个 O365 用户收集邮箱属性所需的 PowerShell 脚本
问题描述
我需要一个(单个)Powershell 脚本来收集每个 Office 365 用户的以下属性:
- 显示名称
- 用户主体名称
- 转发地址
- 转发Smtp地址
- DeliverToMailboxAndForward
- IsMailboxEnabled
- 自动回复状态
- 内部消息
- 外部消息
数字 1-6 是从命令中获得的Get-MailBox
。数字 7-9 是从命令中获得的Get-MailboxAutoReplyConfiguration
(对于单个用户)。要为所有用户获取 AutoReplyConfiguration,我们可以使用命令将结果通过管道Get-Mailbox
输入。Get-MailboxAutoReplyConfiguration
Get-MailBox | Get-MailboxAutoReplyConfiguration
一旦我们有了,Collection<PSObject> results
我们就可以通过使用代码来遍历集合来收集属性,如下所示:
string displayName = (string) result.Properties["DisplayName"].Value;
我想要的是一种在一个脚本中收集所有上述 9 个属性的方法。到目前为止,我只能先调用Get-MailBox
,将结果收集到字典中,然后使用Get-MailboxAutoReplyConfiguration
,收集结果,从字典中找到它的用户,然后应用剩余的属性。我需要调用脚本并在 C# 中收集结果。
将这两个动作组合成一个动作的目的是减少查询的总时间。如果这样做实际上不是更有效,请告诉我,我将继续我目前的行动方案。谢谢!
解决方案
创建自己的对象的一种方法是向现有对象添加脚本方法或简单的 NoteProperties。(请务必明确选择您需要的所有属性)
$MailBoxes = Get-MailBox | Foreach-Object {
$autoConfig = $_ | Get-MailboxAutoReplyConfiguration
$_ | Add-Member -Type NoteProperty -Name AutoReplyState -Value $autoConfig.AutoReplyState
$_ | Add-Member -Type NoteProperty -Name InternalMessage -Value $autoConfig.InternalMessage
$_ | Add-Member -Type NoteProperty -Name ExternalMessage -Value $autoConfig.ExternalMessage
}
$MailBoxes | Select-Object *
推荐阅读
- rest-assured - 为什么我在 Assertion 中输入状态码时脚本全是红线
- java - Java 纸牌游戏“战争”出现越界异常
- ios - 插入时集合视图单元格是否可重用?
- python - 如何将字符串转换为 datetime.datetime 对象?
- node.js - 如何正确找到 .txt 文件并使用 NodeJS 读取其内容
- python - SQL Alchemy - 混合属性 - 拆分列
- reactjs - 如何创建指向反应组件的路由
- php - PHP - 保护用户完整的 HTML 文件免受 XSS 攻击
- django - Django 自定义迁移 RunPython 无法访问另一个数据库中的 ForeignKey 字段
- reactjs - 将新文档添加到 Firestore 集合后打印重复列表