powershell 如何将cmdlet的输出解析为另一个?

mzsu5hc0  于 2023-03-23  发布在  Shell
关注(0)|答案(1)|浏览(107)

我需要在OnPremise Active Directory中创建不再活动的用户列表?
使用以下格式作为输入:

User Name; user.Name@domain.com
John Doe; John.Doe@domain.net
Veki Jado; Veki.Jado@office.com
....

我这里的目标是生成用户可以安全地删除的列表,由巴黎g上述到:

Get-ADUser | Export-CSV

我怎样才能做到呢?

7jmck4yq

7jmck4yq1#

如果我正确理解了您的问题,您希望生成非活动(禁用)Active Directory用户的列表并将其输出到CSV文件中?
你的陈述
使用以下格式作为输入:
这是你想要输出的CSV文件的格式吗?还是它是一个包含用户信息的输入,你想验证他们是否仍然在Active Directory中启用?
假设它是你的输出应该看起来像什么的定义,你可以用下面一行PowerShell代码来实现:

Get-ADUser -Filter {Enabled -eq $false} | Select-Object -Property DisplayName,UserPrincipalName | Export-Csv -Path "C:\temp\myoutputfile.csv" -Delimiter ";" -Encoding UTF8 -NoTypeInformation

编辑1:

基于你的精心设计,我能够重现实际上是一个字符串数组的输出,格式如下:
FirstName LastName;firstname.lastname@domain.com
下面的代码应该给予你你正在寻找的东西:

$theInputCollectionOfUsers = Get-AntiPhishPolicy -Identity 'Default anti-phishing policy' | Select-Object -ExpandProperty TargetedUsersToProtect

[array]$adUsers = $null
foreach($user in $theInputCollectionOfUsers){
$userPrincipalName = $user.Split(";")[1]
[array]$adUsers += Get-ADUser -Identity $userPrincipalName
}
$adUsers | Select-Object -Property DisplayName,UserPrincipalName,Enabled | Export-Csv -Path "C:\temp\myoutputfile.csv" -Delimiter ";" -Encoding UTF8 -NoTypeInformation

相关问题