2016-08-12 1 views
0

このスクリプトを調整して、CSVからローカルユーザーのバッチを作成するが、既に作成済みのアカウントはスキップする必要がある。私はうまく作成することができますが、私はすでに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() 
} 
+0

の右側の値式提供しなければならないことが原因あなたのために失敗しました「 - 」演算子を。 C:¥Windows¥TEMP¥AltirisScript0B427C10272370E8748.ps1:12 char:12 + If($ user - <<<< notin($ ObjOU.Children | Where {$ _。SchemaClassName -eq 'user'} )) + CategoryInfo:ParserError:(:) []、ParseException + FullyQualifiedErrorId:ExpectedValueExpression – CrumBum

+0

これに対してどのような式を使用しますか? – CrumBum

答えて

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" 
}} 
0

を存在するローカルアカウントを省略する方法あなたはすでに引いている情報から、ローカルユーザーアカウントのリストを取得することができます。その後、ユーザーを作成する前にフィルタリングしてください。

$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() 
} 
+0

私は助けてくれてありがとう - それはIFステートメントが好きではなく、アカウントを作成しません。それは ' - '演算子の右側に値式が必要です。 11 char 12. – CrumBum

+0

FIXED!見つからなければアカウントを作成し、すでに作成されたアカウントはスキップします。 – CrumBum

関連する問題