从 csv 创建本地帐户但如何省略已创建的帐户?
creating local account from csv but how to omit already created 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()
}
您可以从您已经提取的信息中获取本地用户帐户的列表。然后在创建用户之前对其进行过滤。
$computer = $Env:ComputerName
$text = "C:\accounts.csv"
$user = import-csv -path $text
$ObjOU = [ADSI]"WinNT://$computer"
foreach($strUser in $user)
{
$user = $struser.user
$password = $struser.password
$description = $struser.description
$group = $struser.group
Clear-Host
If($user -notin ($ObjOU.Children|Where{$_.SchemaClassName -eq 'user'}).Name){
$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()
}
#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"
}}
我需要调整此脚本以从 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()
}
您可以从您已经提取的信息中获取本地用户帐户的列表。然后在创建用户之前对其进行过滤。
$computer = $Env:ComputerName
$text = "C:\accounts.csv"
$user = import-csv -path $text
$ObjOU = [ADSI]"WinNT://$computer"
foreach($strUser in $user)
{
$user = $struser.user
$password = $struser.password
$description = $struser.description
$group = $struser.group
Clear-Host
If($user -notin ($ObjOU.Children|Where{$_.SchemaClassName -eq 'user'}).Name){
$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()
}
#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"
}}