2017-11-10 149 views
2

我是新来的,不太了解PowerShell。我有一个.csv数以千计的电子邮件,我需要使用Active Directory来查找特定的自定义变量的状态,使用PowerShell

我已经有了一个.csv,它只有“EMAILS”标题和其下的6000封电子邮件。 (email1 @ company,email2 @ company等)

我需要找到每个特定自定义属性的状态。

独立,我知道我可以为了找到一个特定用户的状态下运行

Get-ADUser -Filter {mail -eq '[email protected]'} -properties customproperty 

我一直在撞墙,试图使它与import-csvexport-csv一起工作,但我一直在我的控制台上变红。

有人可以指我一个例子,其中import-csvexport-csv正确使用,与一个命令运行的内容?

+1

发布您的代码,错误消息,并问:“帮助我理解这个错误,让我的代码工作的?” - >关于主题。发布“我不能,请谷歌一个例子,并将其链接到我” - >明确关闭“请求教程或链接到第三方资源”下的主题。电子邮件是CSV中的一行代码,还是每行都是由分号/空格等分隔的人员的多封电子邮件的集合。 ? (为什么它是一个CSV,如果没有字段要分开的话) – TessellatingHeckler

回答

0

因此,如果没有看到您发布的代码,我认为您会在哪里运行问题与两个事物如何交互。

第一种情况是当您使用Import-CSV cmdlet时。您将收到一组具有每列属性的对象,而不是一组字符串。

这是问题的第二部分,这是AD模块滤波器的灵敏度。但简短的答案是不要在过滤器内使用{},因为如果您使用{mail -eq $ImportedCSV.EMAILS}它会中断。 mklement0有一个wonderful answer进入细节。但一个简单的经验法则是“双引号外单引号”内部。

所以,你可以扩大EMAILS财产或者与Select-Object -ExpandProperty EMAILS有其内部{}工作的一个阵列或者你可以使用"mail -eq '$ImportedCSV.EMAILS'"

这里的扩大和使用"property -eq '$variable'"风格既过滤器的例子:

Import-CSV C:\Example\Path.csv | 
    Select-Object -ExpandProperty EMAILS | 
    ForEach-Object { 
     Get-ADUser -Filter "mail -eq '$_'" -Properties customproperty 
    } | 
    Select-Object mail,customproperty | 
    Export-CSV C:\Example\OutputPath.csv -NoTypeInformation 
1

这就是我会做。

首先,获取在AD中具有电子邮件地址的所有用户,并将其保存到散列表中。这将使查询速度更快,并且在您的域控制器上减少整体负载。如果您拥有100,000个用户帐户,它可能不是最好的选择,但我预计它一般。

$ADUsers = @{}; 
Get-ADUser -Filter "mail -like '*'" -Properties mail, customproperty | ForEach-Object { 
    $ADUsers.Add($_.mail, $_.customproperty); 
} 

现在导入CSV并使用Select-Object的计算属性进行查找,然后将其导出。

Import-Csv -Path $InputFile | Select-Object -Property emails, @{n='customproperty';e={$ADUsers[$_.emails]}} | Export-Csv -Path $OutputFile -NoTypeInformation; 
0

请使用下面的代码

$csvInput = Import-CSV C:\Example\test.csv 

Foreach ($line in $csvinput) { 
    Get-ADUser -Filter {mail -eq $line.mail} -Properties mail, customproperty | 
    Select-Object mail,customproperty | 
     Export-CSV C:\Example\OutputPath.csv -NoTypeInformation 
} 
+0

这里你需要在'Export-Csv'上使用'-Append'参数。 –

相关问题