gpt4 book ai didi

azure - 如何在 PowerShell 中导出新的单独 csv

转载 作者:行者123 更新时间:2023-12-03 06:49:43 25 4
gpt4 key购买 nike

我有一个包含多个列的现有 csv 文件,我正在尝试使用“所有者”列值并检查该用户是否存在于 AzureAD 中。

如果用户存在,则忽略;如果不存在,则将其导出到名为 $OrphanOneDrive 的新 CSV 文件。

到目前为止我已经有了这个脚本,但由于某种原因它还没有工作,所以如果我能得到任何帮助或建议,我将不胜感激。

我使用状态消息来检查它,因为这就是用户不存在时的样子。

enter image description here


$CSVImport = Import-CSV $LitHoldUserSites

ForEach ($CSVLine in $CSVImport) {

$CSVOwner = $CSVLine.Owner
try{
$CheckinAzureAD = Get-AzureADUser -ObjectId $CSVOwner
}catch{
$StatusMessage = $_.Exception.Message
if($Null -eq $StatusMessage ){
#Ignore because User Exists
}else{
#Export to new csv for every owner that got an error
$CheckinAzureAD | Export-Csv $OrphanOneDrive -notypeinformation -force
}

}

最佳答案

您已经在评论中得到了答案,但话虽这么说,我想针对这个问题提交不同的看法。

我建议先获取所有用户,然后使用刚刚获取的用户的本地缓存,而不是按照您的方式进行操作。这应该会提高性能,因为您只需调用一次 Get-AzureADUser 而不是多次调用。


# Getting all users once
$AllUsers = Get-AzureADUser -All $true

$CSVImport = Import-CSV $LitHoldUserSites
$OrphanedUsers = [System.Collections.Generic.List[PSObject]]::new()
ForEach ($CSVLine in $CSVImport) {

$CSVOwner = $CSVLine.Owner
# Same as Get-AzureADUser -ObjectId $CsvOwner but we don't have to make that external call anymore
$CheckinAzureAD = $AllUsers | Where ObjectId -eq $CSVOwner
if ($null -eq $CheckinAzureAD) {
# Instead of exporting each users individually, we collect the users
$OrphanedUsers.Add($CSVLine)
Continue
}

}
# 1 single export vs exporting each users is more efficient.
$OrphanedUsers | Export-Csv $OrphanOneDrive -NoTypeInformation

关于azure - 如何在 PowerShell 中导出新的单独 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73804557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com