比较两个 CSV 并仅针对 Powershell 中的差异运行

比较两个 CSV 并仅针对 Powershell 中的差异运行

抱歉,如果我提前说得有点多,但我还是开始吧!

背景故事

我们希望自动化修复可能被入侵的 Office 365 帐户的过程。此信息通过 REST API 从 graph.microsoft.com 提取并导出到包含用户 UPN 的 CSV。目前,我们使用单独的脚本检查并手动修复每个帐户,该脚本可以针对 CSV 中的每个用户批量执行此操作。这可能会变得很乏味,因为必须时不时地检查报告,因此我们希望使用一个或多个脚本自动执行此操作。

问题

目前,我们拥有约 2000 名已启用 MFA 的用户,还有大约 10,000 名用户即将启用,并且每周都会有更多用户启用。我们不希望发生这种情况:最终出现在我们的风险用户报告/电子表格中的用户需要重新启用,这将迫使他们重新配置 MFA 联系方式/应用程序。

期望的结果

使用任何方法,将一个 CSV(风险用户)中的用户名与另一个 CSV(启用 MFA 的用户)进行比较。要么将差异输出到另一个 CSV,以便我们可以针对该 CSV 运行我们的补救脚本,要么在我们的补救脚本中仅针对未出现在启用 MFA 的用户 CSV 上的用户运行

目前实施

通过 graph.microsoft.com 从风险事件生成 CSV https://pastebin.com/MNChL3KY

获取当前启用的 MFA 用户并输出到 CSV https://pastebin.com/kAHSpdW2

通过 CSV 修复帐户 https://pastebin.com/R818W9MM

任何类型的小道消息、指针对于实现这一点都会非常有帮助,我肯定不会遇到什么困难。

答案1

您可以使用 Powershell 命令将两个文件作为文本进行比较 比较对象

powershell Compare-Object (gc FILE1) (gc FILE2)

应该先对这两个文件进行排序。

答案2

我没有阅读你所有的代码(视力受损),但创建所需 CSV 的基础应该很简单:

$Risky = Import-Csv -path '<path to Risky.csv>'
$MFAenabled = (Import-Csv -path '<path to MFAenabled.csv>').UserName

$Risky |
   Where-Object{$_.UserName -notin $MFAenabled} |
      Export-Csv -path '<path to new>'

相关内容