Powershell New-ADUser 变量不工作
Powershell New-ADUser Variable isnt working
脚本
$ADUser = Get-ADUser
if($ADUser -ne "") {echo "there are existing ADUsers!"} #
$Zeilen = (Get-Content C:\Users\Administrator\Documents\users.csv | Measure-Object –Line).Lines #import file, count lines with Measure-Object(mo)(-> output object), ".Lines" takes just number from Measure-Object and convert it to a number
$Zeilen -= 1 # "-1" because 1. line = header without relevant information
$Ausgabe = Import-Csv C:\Users\Administrator\Documents\users.csv
$password = "Ausbildung2020" | ConvertTo-SecureString -AsPlainText -Force #is disabled without password
###################
#creates list with existing users
$Userlist = ""
$CsvData = (Get-ADUser).DistinguishedName | Select-Object -Skip 3 #removes first 3 Zeilen, which contains Admin, Guest und kgrtgt because the are irrelevant
$ZeilenCsvData = $CsvData.count #line amount from (Get-ADUser).DistinguishedName
for($line = 0;$line -lt $ZeilenCsvData; $line++ ) #-lt oder -le ?
{
$UserLine = $CsvData[$line]
$user1 = $UserLine.Split(",")
$user2 = $user1[0].Split("=")
$user3 = $user2[1] #extract Username from String
$UserList += $user3 + "`r`n" #paste Username from current Iteration to $UserList
}
###################
#check if ADUser exists
for ($loop = 0; $loop -lt $Zeilen; $loop++) #-lt oder -le ? #execute loop as often as lines in (Csv-file with (new) Users) exists
{
for($i = 0; $i -lt $ZeilenCsvData ; $i++) #$ZeilenCsvData: number of lines from Get-ADUser without Admin, Guest und kgrtgt
{
if($Ausgabe[$loop].Name -eq $UserList.[$i]) #!!line with problem!!
{
$match = $true
break
}
}
if($match -eq $true){ continue } #ends Iteration and continue with new one if User exists
###################
#create User if it doesn't exist
New-ADUser -Name $Ausgabe[$loop].Name `
-GivenName $Ausgabe[$loop].GivenName `
-Surname $Ausgabe[$loop].Surname `
-City $Ausgabe[$loop].City `
-AccountPassword $password `
-path "OU=Benutzer,DC=dmamgt,DC=local" `
Enable-ADAccount -Identity $Ausgabe[$loop].Name #requirement: password matches standard
}
问题
在问题行中,“[$”标记为红色,我得到了那些使脚本无法执行的错误
任务
我的任务是创建一个名为“Benutzer”的组织单元,我应该在其中创建 20 个用户,这些用户具有一些属性,例如名称、城市、密码、已启用...我从 csv 文件导入的。但是我必须检查用户是否已经存在,如果存在,循环应该转到下一个用户来创建它。
错误:
At C:\Users\Administrator\Documents\extended New-ADUser mit csv.ps1:36 char:48
+ if($Ausgabe[$loop].Name -eq $UserList.[$i])
+ ~
Missing type name after '['.
At C:\Users\Administrator\Documents\extended New-ADUser mit csv.ps1:36 char:47
+ if($Ausgabe[$loop].Name -eq $UserList.[$i])
+ ~
Missing property name after reference operator.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingTypename
Method invocation failed because [System.Char] does not contain a method named 'Split'.
At C:\Users\Administrator\Documents\extended New-ADUser mit csv.ps1:23 char:5
+ $user1 = $UserLine.Split(",")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
将$UserList
设为array:
$UserList = @()
像这样添加项目:
$UserList += $user
这就是索引数组的方式(没有点)
$UserList[$i]
您的脚本可能还有一些其他问题,我没有完整阅读它,但我希望这能帮助您入门。
脚本
$ADUser = Get-ADUser
if($ADUser -ne "") {echo "there are existing ADUsers!"} #
$Zeilen = (Get-Content C:\Users\Administrator\Documents\users.csv | Measure-Object –Line).Lines #import file, count lines with Measure-Object(mo)(-> output object), ".Lines" takes just number from Measure-Object and convert it to a number
$Zeilen -= 1 # "-1" because 1. line = header without relevant information
$Ausgabe = Import-Csv C:\Users\Administrator\Documents\users.csv
$password = "Ausbildung2020" | ConvertTo-SecureString -AsPlainText -Force #is disabled without password
###################
#creates list with existing users
$Userlist = ""
$CsvData = (Get-ADUser).DistinguishedName | Select-Object -Skip 3 #removes first 3 Zeilen, which contains Admin, Guest und kgrtgt because the are irrelevant
$ZeilenCsvData = $CsvData.count #line amount from (Get-ADUser).DistinguishedName
for($line = 0;$line -lt $ZeilenCsvData; $line++ ) #-lt oder -le ?
{
$UserLine = $CsvData[$line]
$user1 = $UserLine.Split(",")
$user2 = $user1[0].Split("=")
$user3 = $user2[1] #extract Username from String
$UserList += $user3 + "`r`n" #paste Username from current Iteration to $UserList
}
###################
#check if ADUser exists
for ($loop = 0; $loop -lt $Zeilen; $loop++) #-lt oder -le ? #execute loop as often as lines in (Csv-file with (new) Users) exists
{
for($i = 0; $i -lt $ZeilenCsvData ; $i++) #$ZeilenCsvData: number of lines from Get-ADUser without Admin, Guest und kgrtgt
{
if($Ausgabe[$loop].Name -eq $UserList.[$i]) #!!line with problem!!
{
$match = $true
break
}
}
if($match -eq $true){ continue } #ends Iteration and continue with new one if User exists
###################
#create User if it doesn't exist
New-ADUser -Name $Ausgabe[$loop].Name `
-GivenName $Ausgabe[$loop].GivenName `
-Surname $Ausgabe[$loop].Surname `
-City $Ausgabe[$loop].City `
-AccountPassword $password `
-path "OU=Benutzer,DC=dmamgt,DC=local" `
Enable-ADAccount -Identity $Ausgabe[$loop].Name #requirement: password matches standard
}
问题
在问题行中,“[$”标记为红色,我得到了那些使脚本无法执行的错误
任务
我的任务是创建一个名为“Benutzer”的组织单元,我应该在其中创建 20 个用户,这些用户具有一些属性,例如名称、城市、密码、已启用...我从 csv 文件导入的。但是我必须检查用户是否已经存在,如果存在,循环应该转到下一个用户来创建它。
错误:
At C:\Users\Administrator\Documents\extended New-ADUser mit csv.ps1:36 char:48
+ if($Ausgabe[$loop].Name -eq $UserList.[$i])
+ ~
Missing type name after '['.
At C:\Users\Administrator\Documents\extended New-ADUser mit csv.ps1:36 char:47
+ if($Ausgabe[$loop].Name -eq $UserList.[$i])
+ ~
Missing property name after reference operator.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingTypename
Method invocation failed because [System.Char] does not contain a method named 'Split'.
At C:\Users\Administrator\Documents\extended New-ADUser mit csv.ps1:23 char:5
+ $user1 = $UserLine.Split(",")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
将$UserList
设为array:
$UserList = @()
像这样添加项目:
$UserList += $user
这就是索引数组的方式(没有点)
$UserList[$i]
您的脚本可能还有一些其他问题,我没有完整阅读它,但我希望这能帮助您入门。