首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell Import-Csv New-AdUser跳过用户存在

Powershell Import-Csv New-AdUser跳过用户存在
EN

Stack Overflow用户
提问于 2014-06-12 12:11:21
回答 1查看 5.9K关注 0票数 0

我有一个功能齐全的脚本来导入和创建AD用户,但我想跳过尝试创建已在AD中的用户。

代码语言:javascript
复制
Import-Module ActiveDirectory

$CsvPath = "C:\Shares\Users.csv"
$CsvTest = Test-Path $CsvPath

Import-Csv $CsvPath | ForEach-Object {
Get-AdUser $_.sAMAccountName
}

Import-Csv $CsvPath | ForEach-Object {  
New-ADUser -Name $_.Name -UserPrincipalName $_.userPrincipalName -SamAccountName $_.sAMAccountName -DisplayName $_.DisplayName -GivenName $_.GivenName -Surname $_.Surname -AccountPassword (ConvertTo-SecureString $_.Password  -AsPlainText -force)  -Enabled $true -ChangePasswordAtLogon $true

{

Catch [Microsoft.ActiveDirectory.Management.Commands.NewADUser] 

}
    $_."sAMAccountName";  "already exists"
    }
EN

回答 1

Stack Overflow用户

发布于 2014-06-12 18:00:35

像这样不依赖异常的东西会更好:

代码语言:javascript
复制
Import-Module ActiveDirectory

$csvPath = "C:\Shares\Users.csv"

if (Test-Path $csvPath)
{
    $newUsers = Import-Csv $csvPath
    $existingUsers = Get-ADGroupMember "Domain Users"

    foreach ($newUser in $newUsers)
    {
        if (($existingUsers | Where-Object { $_.sAMAccountName -eq $newUser.sAMAccountName }) -eq $null)
        {
            $user = New-ADUser -Name $newUser.Name -UserPrincipalName $newUser.userPrincipalName -SamAccountName $newUser.sAMAccountName -DisplayName $newUser.DisplayName -GivenName $newUser.GivenName -Surname $newUser.Surname -AccountPassword (ConvertTo-SecureString $newUser.Password -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true
        }
    }
}

就我个人而言,我更喜欢使用Powershell的Quest AD模块,因为当一个对象不存在时,它通过返回$null来避免异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24176307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档