DataGen/Initialize-User.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
param ( [int]$count = 100, [switch]$whatif, [switch]$verbose, [string]$domain, [switch]$nobulk, [switch]$force )

. ./common.ps1
$class = get-scsmclass Microsoft.AD.User$
if ( $domain )
{
$DName = $domain
}
else
{
$DName = $env:userdomain
}
$userdb = get-scsmuser
if ( ($userdb.count -gt $count) -and ! $force )
{
    Write-Host "$count users already exist, use -force to add more"
    exit
}
$usernames = @{}
while ( $userNames.Keys.count -lt $count )
{
    $FName = Get-Lorem -word
    $LName  = Get-Lorem -word
    $usernames["${FName}:${LName}"]++
    Write-Progress -Activity "Generating unique users" -Stat "${FName} ${LName}" -per ( $usernames.keys.count / $count * 100 )
}
$UserArgs = @{
    bulk    = ! $nobulk
    class   = $class 
    whatif  = $whatif 
    verbose = $verbose
    }
$userNames.Keys | %{ $cur = 1; $count = $userNames.Keys.Count } { 

    $F,$L = $_.split(":")
    $n = "${F} ${L}"
    write-progress -Activity "Creating Users" -Status $n -perc ($cur++/$count * 100)
    @{
        UserName = "${F} ${L}"
        FirstName = $F
        LastName = $L
        Domain = $DName
        DisplayName = "${F} ${L}"
        DistinguishedName = "CN=${F} ${L},CN=Users,DC=${DName},DC=com"
        UPN = "${F}.${L}@${DName}.com"
        Department = Get-Lorem -word
        BusinessPhone = Get-Phone 
        BusinessPhone2 = Get-Phone 
        HomePhone = Get-Phone 
        HomePhone2 = Get-Phone 
        Fax = Get-Phone 
        Mobile = Get-Phone 
        City = Get-Lorem -word
        State = Get-State
        Zip = "{0:00000}" -f $RANDOM.Next(10000,98000)
    }
}  | new-scsmobject @UserArgs