从csv创建本地帐户但如何省略已创建的帐户?

时间:2016-08-12 19:22:30

标签: powershell user-accounts

我需要调整此脚本以从CSV创建一批本地用户,但跳过已经创建的帐户。我可以创建很好但如何省略已存在的本地帐户

$computer = $Env:ComputerName
$text = "C:\accounts.csv"
$user = import-csv -path $text
   foreach($strUser) in $user)
{
 $user = $struser.user
 $password = $struser.password
 $description =  $struser.description
 $group = $struser.group
 Clear-Host
 $ObjOU = [ADSI]"WinNT://$computer"
 $objUser = $objOU.Create("User", $user)
 $objUser.setpassword($password)
 $objUser.put("description",$description)
 $objUser.SetInfo()
 $objGroup = [ADSI]"WinNT://$computer/$group"
 $objGroup.add("WinNT://$computer/$user")
 $objGroup.SetInfo()
}

2 个答案:

答案 0 :(得分:0)

您可以从您正在提取的信息中获取本地用户帐户的列表。然后在创建用户之前对其进行过滤。

> var3 = c(-3.66356164612965, 3.66356164612965, 3.66356164612965, 3.66356164612965, 
+ -3.66356164612965, -0.800119300112113, 3.66356164612965, 3.66356164612965, 
+ 3.66356164612965, 3.66356164612965, -3.66356164612965, 3.66356164612965, 
+ 3.66356164612965, 3.66356164612965, 3.66356164612965, 3.66356164612965, 
+ 3.66356164612965, 3.66356164612965, 3.66356164612965, 3.66356164612965, 
+ 3.66356164612965, 3.66356164612965, 3.66356164612965, -1.29504568965475, 
+ -3.66356164612965)
> ggplot(data=NULL, aes(x=var3)) + geom_histogram()

答案 1 :(得分:0)

#setting Variables 
$computer = $Env:ComputerName
$text = "C:\ProgramData\Bridge Operators.csv"
$user = import-csv -path $text
foreach($strUser in $user)
{
 $user = $struser.user
 $password = $struser.password
 $description =  $struser.description
 $group = $struser.group
 Clear-Host  
##First check if user exists
$objComputer = [ADSI]"WinNT://$computer,computer"
$colUsers = ($objComputer.psbase.children | Where-Object {$_.psBase.schemaClassName -eq "User"} | Select-Object -expand Name)
$userFound = $colUsers -contains $user
if (! $userFound) {
  write-host "The $user account did not exist."
  write-host "Creating $user"
 $ObjOU = [ADSI]"WinNT://$computer"
 $objUser = $objOU.Create("User", $user)
 $objUser.setpassword($password)
 $objUser.put("description",$description)
 $objUser.SetInfo()
 $objGroup = [ADSI]"WinNT://$computer/$group"
 $objGroup.add("WinNT://$computer/$user")
 $objGroup.SetInfo()
}
else {
  write-host "$user account exists."
  write-host "skipping"
 }}