从CSV导入的Powershell脚本,检查AD帐户状态,然后导出到CSV

时间:2016-08-26 14:49:34

标签: powershell csv active-directory

我正在编写一个Powershell脚本来获取Active Directory帐户的CSV文件,验证每个帐户,并将验证状态写回单独的CSV文件。我需要协助编写CSV;我已经查看了Export-Csv cmdlet,但是当我导入CSV时,我有点困惑它是如何工作的。到目前为止,这是我的代码:

Import-Csv C:\Users\drives.csv | Foreach-Object{

$user = ([ADSISEARCHER]"(samaccountname=$($_.SamAccountName))").FindOne()

if($user)
{
    New-Object -TypeName PSObject -Property @{
        SamAccountName = $user.SamAccountName
        IsDisabled = $user.GetDirectoryEntry().InvokeGet('AccountDisabled')
    }
}
else
{
        Write-Warning "Can't find user '$($_.SamAccountName)'"
}

}

有关如何导出帐户名称(从一个CSV导入)和帐户状态(我当前脚本提供)的任何想法?

3 个答案:

答案 0 :(得分:1)

这是一种可能性 - 未经测试,但它旨在说明export-csv。所有标准警告均适用:)

$resultList = @()
Import-Csv C:\Users\drives.csv -header("SamAccountName") | Foreach-Object{

   $user = ([adsisearcher]"(samAccountName=$($_.SamAccountName))").FindOne()

   $resultList += New-Object -TypeName PSObject -Property @{
           SamAccountName = $_.SamAccountName
           IsDisabled = if ($user) { 
                            $user.GetDirectoryEntry().InvokeGet('AccountDisabled') 
                        } else {
                            "User not found."
                        }
       }

}

$resultList | export-csv -Path c:\users\driveresult.csv -NoTypeInformation

答案 1 :(得分:0)

$exportCsv = @()

Import-Csv C:\Users\drives.csv | Foreach-Object{
    $user = ([ADSISEARCHER]"(samaccountname=$($_.SamAccountName))").FindOne()

    if($user)
    {
        $exportCsv += New-Object -TypeName PSObject -Property @{
                        SamAccountName = $user.SamAccountName
                        IsDisabled = $user.GetDirectoryEntry().InvokeGet('AccountDisabled')
                      }
    }
    else
    {
            Write-Warning "Can't find user '$($_.SamAccountName)'"
    }
}

$exportCsv | Export-Csv -Path $myOtherCsvFilePath

在这里,您将PSERS的Powershell数组添加到另一个CSV文件

答案 2 :(得分:0)

您应该稍微更改一下代码。

public class A {
    public static final CONSTANT = "i am a static final member";
}

现在你不会通过管道丢失对象信息。