您的代码的问题,您的Csv只获得最后一个创建的用户的原因是
对的每次递归调用
$AddUser
scriptblock正在覆盖以前的Csv文件
,您的代码可以通过添加
-Append
:
$array | Export-CSV -NoTypeInformation -Path C:\Test\Employees.csv -Append
但是,我建议您使用
while
循环,这样更容易,而且不需要使用
$script:
作用域变量。在这种情况下
虽然
循环被包装在一个外部调用的脚本块中,以便能够将输出从循环直接管道传输到
Export-Csv
.
Import-Module ActiveDirectory
& {
[int] $iviisID = Read-Host 'Enter iViis ID number'
while ($true) {
$name = Read-Host 'Enter username (first.last)'
$number = Read-Host 'Enter users Phone Number'
$gender = Read-Host 'Enter 1 for Male, 2 for Female'
if ($gender -eq 1) {
$gender = 'Male'
}
else {
$gender = 'Female'
}
$role = Read-Host 'Enter 1 for Foreman, 2 for Contract Manager'
if ($role -eq 1) {
$role = 'Foreman@er'
}
else {
$role = 'ContractManager@er'
}
$user = Get-ADUser -Identity $name -Properties givenName, sn, employeeId, mail
[PSCustomObject] @{
FirstName = $user.givenName
Surname = $user.sn
FirstNames = $firstName
LastName = $lastName
EMPLOYEEID = $iviisID
PGID = $user.employeeID
EmployeeCode = $iviisID
UserID = [string] $iviisID + '@er'
ENABLEDFLAG = '1'
EmailAddress = $user.mail
PersonalPhoneNumber = $number
Role = $role
Password = 'plant.box.dog'
Gender = $gender
PreferredName = $firstName
Category = 'Employee'
}
$newUser = Read-Host 'Would you like to add another user? (y/n)'
if ($newUser -eq 'y') {
$iviisID++
continue
}
# if `$newUser` not equal to 'Y' breaks the while loop here
break
}
} | Export-Csv -NoTypeInformation -Path C:\Test\Employees.csv