Hi guys,
The script that i’m talking about is working perfectly and doing all the things that i intend to.
The thing is, that i figured it out only after long testing, untill i got the right syntax
here is the script:
cls #get the csv file $filepath = import-csv "C:\users.csv" #set the variable for the uers $newusers = $filepath #set Passwords for new users $securepassword = "BlahBlah" foreach ($user in $newusers) { #get user information $User_Creation_Settings = @{ Name = "$($user.'First Name') $($user.Lastname)" GivenName = $user.'First Name' Surname = $user.Lastname UserPrincipalName = $user.UserPrincipalName SamAccountName = $user.SamAccountName Path = $user.Path ScriptPath = $user.ScriptPath ChangePasswordAtLogon = $false Department = $user.Department DisplayName = $user.DisplayName Description = $user.Description Title = $user.'Job Title' AccountPassword = ConvertTo-SecureString $securepassword -AsPlainText -Force Enabled = $true } New-ADUser @User_Creation_Settings #Get Groups information $group1 = $user.Group1 $group2 = $user.Group2 $group3 = $user.Group3 $group4 = $user.Group4 #Add the users in to Groups Add-ADPrincipalGroupMembership -Identity $user.SamAccountName -MemberOf $user.group1 Add-ADPrincipalGroupMembership -Identity $user.SamAccountName -MemberOf $user.group2 add-ADPrincipalGroupMembership -Identity $user.SamAccountName -MemberOf $user.group3 Add-ADPrincipalGroupMembership -Identity $user.SamAccountName -MemberOf $user.group4 Write-Host "`n" Write-Host "The account for $($user.'First Name') $($user.Lastname) created in $($user.Path) successfully " } pause
I want to understand if i understood, why it actually worked in that way,
in that case:
Name = "$($user.'First Name') $($user.Lastname)"
is that mean that this string $($user.‘First Name’) is actually one variable?
and if so, why do i need to use the “$” twice? inside the () and outside the ().
I understand that it similar to this case
$(Get-Process MicrosoftEdge).Kill()
but in that case i use the “$” only once.
Thanks a lot for your help