2012-12-03 21 views
1

我得到了下面的代碼(工作):PowerShell的存在本地用戶ADSI

#Import File 
$Users = Import-Csv C:\Users\Administrator\Desktop\userImport\users.csv 

# Setting data 
$compname = hostname 
$computer = [ADSI]"WinNT://$compname" 
$userGroup = [ADSI]"WinNT://./Users,Group" 

# Loop to add all users 
$Users | % { 

    # Create user itself 
    $createUser = $computer.Create("User",$_.userid) 

    # Set password (print1!) 
    $createUser.SetPassword($_.password) 
    $createUser.SetInfo() 

    # Create extra data 
    $createUser.Description = "Import via powershell" 
    $createUser.FullName = $_.'full name' 
    $createUser.SetInfo() 

    # Set standard flags (Password expire/Password change/Account disabled) 
    $createUser.UserFlags = 64 + 65536 # ADS_UF_PASSWD_CANT_CHANGE + ADS_UF_DONT_EXPIRE_PASSWD 
    $createUser.SetInfo() 

    # Adduser to standard user group ("SERVER02\Users") 
    $userGroup.Add($createUser.Path) 

    # Show that user X as been added 
    $username = $_.'full name' 
    echo "User $username added" 
} 

但怎麼可能,如果用戶已經存在建立一個檢查? 在網絡上我真的不能找到什麼:X

+0

已存在的組或作爲本地用戶? –

+0

如果用戶已經以本地用戶身份 –

回答

0

你可以試試這個:

#Import File 
$Users = Import-Csv C:\Users\Administrator\Desktop\userImport\users.csv 

# Setting data 
$compname = hostname 
$computer = [ADSI]"WinNT://$compname" 
$userGroup = [ADSI]"WinNT://./Users,Group" 

$localUsers = $computer.Children | where {$_.SchemaClassName -eq 'user'} | % {$_.name[0].ToString()} 

# Loop to add all users 
$Users | % { 

    if($localUsers -NotContains $_.userID) 
    { 
     ... do your job here.... 
    } 
    else 
    { 
     write-host "User $($_.userID) already exists" 
    } 
} 
+0

「user @ {Full Name = P.Reichardt; userid = paj.Reichardt; Password = xxx} .userid不存在」。是我用$ _檢查後得到的腳本。userid #導入文件 $ Users = Import-Csv C:\ Users \ Administrator \ Desktop \ userImport \ userTest.csv #Loop添加所有用戶 $ Users | %{ \t $ localUsers = $ computer.Children |其中{$ _。SchemaClassName -eq'user'} | %{$ _。name [0] .ToString()} \t if($ localUsers -NotContains $ _。userid){ \t \t write-host「user $ _。userid does not exist。」 \t} \t else { \t \t write-host「user $ _。userid already exists」。 \t} } –

+0

@PatrickRennings用正確的變量擴展編輯我的答案! –

+0

$ _。userid現在填充了一大行:user @ {Full Name = P。雷查德;用戶ID = paj.Reichardt;密碼= xxx} .userid不存在「 –

0

不幸的是,ADSI界面似乎在Windows 8.1被打破。這裏是我的解決方法:

if (& net users | select-string "UserName") { 
    # user exists 
} else { 
    # user not found 
} 
相關問題