ML
    • Recent
    • Categories
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    PowerShell - Create New AD User Using Prompts and Variables

    Scheduled Pinned Locked Moved IT Discussion
    powershelladwindows
    26 Posts 6 Posters 5.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • dafyreD
      dafyre @wrx7m
      last edited by

      @wrx7m said in PowerShell - Create New AD User Using Prompts and Variables:

      @JaredBusch - Well, it didn't work when I used the first 2 together. At least, with the syntax I had. Also, it would be nice to know how to do it. But, I would settle for getting the display name Jon Doe with a space in it using the 2 existing variables.

      $DisplayName="$GivenName $SurName" ?

      wrx7mW NerdyDadN 2 Replies Last reply Reply Quote 0
      • wrx7mW
        wrx7m @dafyre
        last edited by

        @dafyre I'll try that. I think I may have already tried it. I did all sorts of iterations.

        1 Reply Last reply Reply Quote 0
        • wrx7mW
          wrx7m
          last edited by

          Import-Module ActiveDirectory
          $GivenName = Read-Host -Prompt "Enter First Name"
          $Surname = Read-Host -Prompt "Enter Last Name"
          $SecurePW = Read-Host -Prompt "Enter a Password" -AsSecureString
          $DisplayName = "$GivenName $Surname"
          New-ADUser -Name $DisplayName `
          

          Results in this error

          New-ADUser : A positional parameter cannot be found that accepts argument '+'.
          At \\FP02\it\Scripts\AD\AD-InitialUserCreationVariables.ps1:6 char:1
          + New-ADUser -Name $DisplayName `
          + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              + CategoryInfo          : InvalidArgument: (:) [New-ADUser], ParameterBindingException
              + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.NewADUser
          
          1 Reply Last reply Reply Quote 0
          • wrx7mW
            wrx7m
            last edited by

            If I get rid of the attempt to combine the 2 existing variables into a 3rd, I get this error.

            New-ADUser : A positional parameter cannot be found that accepts argument '+'.
            At \\FP02\it\Scripts\AD\AD-InitialUserCreationVariables.ps1:5 char:1
            + New-ADUser -Name "$GivenName $Surname" `
            + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                + CategoryInfo          : InvalidArgument: (:) [New-ADUser], ParameterBindingException
                + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.NewADUser
            
            dafyreD PhlipElderP 2 Replies Last reply Reply Quote 0
            • dafyreD
              dafyre @wrx7m
              last edited by

              @wrx7m said in PowerShell - Create New AD User Using Prompts and Variables:

              If I get rid of the attempt to combine the 2 existing variables into a 3rd, I get this error.

              New-ADUser : A positional parameter cannot be found that accepts argument '+'.
              At \\FP02\it\Scripts\AD\AD-InitialUserCreationVariables.ps1:5 char:1
              + New-ADUser -Name "$GivenName $Surname" `
              + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  + CategoryInfo          : InvalidArgument: (:) [New-ADUser], ParameterBindingException
                  + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.NewADUser
              

              If you did not fix UserPrincipalName and EmailAddress as well, it will still error.

              1 Reply Last reply Reply Quote 0
              • JaredBuschJ
                JaredBusch
                last edited by

                This is why you run things manually and not in scripts until you know WTF you are doing.

                Use the PowerShell ISE, that is what it is for.

                You also do not have the Country in quotes. It is a string value.

                wrx7mW 1 Reply Last reply Reply Quote 0
                • NerdyDadN
                  NerdyDad @wrx7m
                  last edited by

                  @wrx7m said in PowerShell - Create New AD User Using Prompts and Variables:

                  What about creating a new variable by combining two existing variables? (For the display name)

                  $displayName = join ($GivenName," ",$SurName)

                  1 Reply Last reply Reply Quote 0
                  • NerdyDadN
                    NerdyDad @dafyre
                    last edited by

                    @dafyre said in PowerShell - Create New AD User Using Prompts and Variables:

                    @wrx7m said in PowerShell - Create New AD User Using Prompts and Variables:

                    @JaredBusch - Well, it didn't work when I used the first 2 together. At least, with the syntax I had. Also, it would be nice to know how to do it. But, I would settle for getting the display name Jon Doe with a space in it using the 2 existing variables.

                    $DisplayName="$GivenName $SurName" ?

                    This would result in literally being given $GivenName $SurName whenever you ask for $DisplayName.

                    dafyreD 1 Reply Last reply Reply Quote 0
                    • dafyreD
                      dafyre @NerdyDad
                      last edited by

                      @NerdyDad said in PowerShell - Create New AD User Using Prompts and Variables:

                      @dafyre said in PowerShell - Create New AD User Using Prompts and Variables:

                      @wrx7m said in PowerShell - Create New AD User Using Prompts and Variables:

                      @JaredBusch - Well, it didn't work when I used the first 2 together. At least, with the syntax I had. Also, it would be nice to know how to do it. But, I would settle for getting the display name Jon Doe with a space in it using the 2 existing variables.

                      $DisplayName="$GivenName $SurName" ?

                      This would result in literally being given $GivenName $SurName whenever you ask for $DisplayName.

                      That's what he wants as I see his code above.

                      1 Reply Last reply Reply Quote 0
                      • JaredBuschJ
                        JaredBusch
                        last edited by

                        0_1542138216766_4a3fe9d1-b314-4779-ad49-cb5b25107eaa-image.png

                        NerdyDadN 1 Reply Last reply Reply Quote 0
                        • NerdyDadN
                          NerdyDad @JaredBusch
                          last edited by

                          @JaredBusch said in PowerShell - Create New AD User Using Prompts and Variables:

                          0_1542138216766_4a3fe9d1-b314-4779-ad49-cb5b25107eaa-image.png

                          Corrected. Thank you sir.

                          1 Reply Last reply Reply Quote 0
                          • wrx7mW
                            wrx7m @JaredBusch
                            last edited by

                            @JaredBusch said in PowerShell - Create New AD User Using Prompts and Variables:

                            This is why you run things manually and not in scripts until you know WTF you are doing.

                            Use the PowerShell ISE, that is what it is for.

                            You also do not have the Country in quotes. It is a string value.

                            I am running it manually and I am running it in ISE.

                            JaredBuschJ 1 Reply Last reply Reply Quote 0
                            • JaredBuschJ
                              JaredBusch @wrx7m
                              last edited by

                              @wrx7m said in PowerShell - Create New AD User Using Prompts and Variables:

                              @JaredBusch said in PowerShell - Create New AD User Using Prompts and Variables:

                              This is why you run things manually and not in scripts until you know WTF you are doing.

                              Use the PowerShell ISE, that is what it is for.

                              You also do not have the Country in quotes. It is a string value.

                              I am running it manually and I am running it in ISE.

                              Change your New-ADUser to a Write-Host and keep adding to the concatenated line until it breaks.

                              coliverC 1 Reply Last reply Reply Quote 1
                              • coliverC
                                coliver @JaredBusch
                                last edited by coliver

                                @JaredBusch said in PowerShell - Create New AD User Using Prompts and Variables:

                                @wrx7m said in PowerShell - Create New AD User Using Prompts and Variables:

                                @JaredBusch said in PowerShell - Create New AD User Using Prompts and Variables:

                                This is why you run things manually and not in scripts until you know WTF you are doing.

                                Use the PowerShell ISE, that is what it is for.

                                You also do not have the Country in quotes. It is a string value.

                                I am running it manually and I am running it in ISE.

                                Change your New-ADUser to a Write-Host and keep adding to the concatenated line until it breaks.

                                Write-host is one of the best debugging tools for poweshell. Does ISE have the ability to report what variable is assigned to what at a given step?

                                1 Reply Last reply Reply Quote 1
                                • wrx7mW
                                  wrx7m
                                  last edited by wrx7m

                                  Thanks, everyone. Write-host was a great tool. I have found the following to work from start to finish.

                                  Edit: Added GivenName and Surname parameters

                                  Import-Module ActiveDirectory
                                  $GivenName = Read-Host -Prompt "Enter First Name"
                                  $Surname = Read-Host -Prompt "Enter Last Name"
                                  $SecurePW = Read-Host -Prompt "Enter a Password" -AsSecureString
                                  New-ADUser -GivenName $GivenName `
                                             -Surname $Surname `
                                             -Name "$GivenName $Surname" `
                                             -AccountPassword $SecurePW  `
                                             -SamAccountName $GivenName `
                                             -DisplayName "$GivenName $Surname" `
                                             -PasswordNeverExpires $True `
                                             -UserPrincipalName "[email protected]" `
                                             -Country "US" `
                                             -EmailAddress "[email protected]" `
                                             -Path "OU=email1.com,OU=User Accounts,DC=upn,DC=com" `
                                             -Enabled $True
                                  Set-ADUser -Identity "$GivenName" -Add @{Proxyaddresses="SMTP:[email protected]", "smtp:[email protected]", "smtp:[email protected]", "smtp:[email protected]", "smtp:[email protected]", "smtp:[email protected]"}
                                  Add-ADGroupMember -Identity Office365Users -Members $GivenName
                                  
                                  JaredBuschJ 1 Reply Last reply Reply Quote 0
                                  • JaredBuschJ
                                    JaredBusch @wrx7m
                                    last edited by

                                    @wrx7m Now you have to make a stupid proof because what if I just had to enter each time and asked me for information?

                                    wrx7mW 1 Reply Last reply Reply Quote 1
                                    • wrx7mW
                                      wrx7m @JaredBusch
                                      last edited by

                                      @JaredBusch said in PowerShell - Create New AD User Using Prompts and Variables:

                                      @wrx7m Now you have to make a stupid proof because what if I just had to enter each time and asked me for information?

                                      I wonder if it would allow no first and last name before erroring out. It shouldn't be able to create it, because those variables are used to create the UPN. No UPN, no workie. I do know that you have to specify a password that adheres to the domain policy.

                                      1 Reply Last reply Reply Quote 0
                                      • PhlipElderP
                                        PhlipElder @wrx7m
                                        last edited by

                                        @wrx7m said in PowerShell - Create New AD User Using Prompts and Variables:

                                        If I get rid of the attempt to combine the 2 existing variables into a 3rd, I get this error.

                                        New-ADUser : A positional parameter cannot be found that accepts argument '+'.
                                        At \\FP02\it\Scripts\AD\AD-InitialUserCreationVariables.ps1:5 char:1
                                        + New-ADUser -Name "$GivenName $Surname" `
                                        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                            + CategoryInfo          : InvalidArgument: (:) [New-ADUser], ParameterBindingException
                                            + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.NewADUser
                                        

                                        Like this I think:

                                        New-ADUser -Name "$($GivenName) $($Surname)"`
                                        

                                        From: https://blogs.technet.microsoft.com/stefan_stranger/2013/09/25/powershell-sub-expressions/

                                        1 Reply Last reply Reply Quote 1
                                        • 1
                                        • 2
                                        • 1 / 2
                                        • First post
                                          Last post