Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Vraag


  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
Ik heb even wat input nodig over een powershell script waar ik mee bezig ben.

Ik wilde het proces versnellen om een gebruiker te kopiëren en een email adres met bijbehorende alias aan te maken.

Daarvoor heb ik het volgende script in elkaar geflanst. Ik heb niet veel ervaring met powershell. Dit is wat ik heb gevonden via Google en het een beetje naar eigen hand proberen te zetten.

Ik loop tegen de volgende dingen aan na voltooiing van het script.
  • user account is niet ingevuld (alleen pre win 2000)
  • Verdere informatie zoals Office, Description, Address, Phone etc niet overgenomen
Eerste gedeelte zorgt dat ik de cmdlets van AD en Exchange kan uitvoeren in mijn powershell
Tweede zorgt dat de gebruiker gekopieerd wordt
Derde zorgt voor het kopieren van de memberships
Vierde voor de aliassen in Exchange.

VBScript:
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
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://xxxxxxx.local/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Import-PSSession $Session
import-module ActiveDirectory

$User = Get-AdUser -Identity (Read-Host "Copy From Username") 
$DN = $User.distinguishedName
$OldUser = [ADSI]"LDAP://$DN"
$Parent = $OldUser.Parent
$OU = [ADSI]$Parent
$OUDN = $OU.distinguishedName
$NewUser = Read-Host "New Username"
$firstname = Read-Host "First Name"
$Lastname = Read-Host "Last Name"
$NewName = "$firstname $lastname"


New-ADUser -SamAccountName $NewUser -Name $NewName -GivenName $firstname -Surname $lastname -Instance $DN -Path "$OUDN" -AccountPassword (Read-Host "New Password" -AsSecureString)

Get-ADUser -Identity $User -Properties memberof |
Select-Object -ExpandProperty memberof |
Add-ADGroupMember -Members $NewUser

Enable-Mailbox -Identity $NewUser -Alias (Read-Host "Enter Alias")
$Proxy = $(Get-Mailbox $NewUser).LegacyExchangeDN
Set-Mailbox $NewUser -EmailAddresses @{Add="X500:$Proxy"}


Ik zou heel graag mijn script willen perfectioneren zodat ook de missende gegevens toegevoegd worden.

Ik heb ook een leuke computer..

Alle reacties


  • Razwer
  • Registratie: December 2000
  • Laatst online: 14-11 20:46

Newton's 3rd law of motion. Amateur moraalridder.


  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
Beetje kort door de bocht om te zeggen dat ik moet gaan googlen. Als je de linkjes leest zie je zelfs dat de helft van mijn script uit de tweede link komt. Ik gaf al aan dat ik al diverse sites had gevonden en zo tot mijn script ben gekomen.

Er is alleen nog steeds geen oplossing geboden voor het meekopieren van de attributen. Er worden wel suggesties gemaakt maar ik ben niet capabel genoeg blijkbaar om dit zelf op te lossen. Vandaar mijn post!

Ik heb ook een leuke computer..


  • Razwer
  • Registratie: December 2000
  • Laatst online: 14-11 20:46
Het is niet kort door de bocht om te zeggen dat je het met google kan vinden, ik doe dat zo ook om jou van antwoord te voorzien.
Als je goed leest in de threads die ik je geef (spiceworks bijvoorbeeld) zie je zoiets als dit:
You've already done half the work here! Since you have already collected the template user, you just need to provide additional parameters for the attributes you need to copy in. For instance, if you need to copy the title you could do this:

$Template = Get-AdUser -identity "username" -Properties Title

New-AdUser Lance_Test -SamAccountName Lance_Test -Enabled $True -Instance $Template -AccountPassword (ConvertTo-SecureString "password1" -AsPlainText -force) -Path "OU=ICT,OU=DOMAIN1 Users,DC=DOMAIN1,DC=LOCAL" -Title $Template.Title -PassThru
Ik zal je niet kwalijk nemen dat je geen kennis hebt. Wat ik je wel kwalijk zal nemen is het niet lezen van geleverde informatie.

“Dit is mijn uitspraak en daarmee zult u het moeten doen” :D

edit: overigens zit je in mijn ogen fundementeel fout met het maken van jouw script. (lees spiceworks thread). Wat jij doet is een nieuwe AD user aan maken en dan group memberships copieren van een bestaande user. Dat is NIET het copieren van een user.
eerste post in die spiceworks thread zegt dit
New-ADUser -Instance (Get-ADUser template)

[ Voor 15% gewijzigd door Razwer op 04-01-2016 13:54 ]

Newton's 3rd law of motion. Amateur moraalridder.


  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
Razwer schreef op maandag 04 januari 2016 @ 13:49:
Het is niet kort door de bocht om te zeggen dat je het met google kan vinden, ik doe dat zo ook om jou van antwoord te voorzien.
Als je goed leest in de threads die ik je geef (spiceworks bijvoorbeeld) zie je zoiets als dit:

[...]

Ik zal je niet kwalijk nemen dat je geen kennis hebt. Wat ik je wel kwalijk zal nemen is het niet lezen van geleverde informatie.

“Dit is mijn uitspraak en daarmee zult u het moeten doen” :D

edit: overigens zit je in mijn ogen fundementeel fout met het maken van jouw script. (lees spiceworks thread). Wat jij doet is een nieuwe AD user aan maken en dan group memberships copieren van een bestaande user. Dat is NIET het copieren van een user.
eerste post in die spiceworks thread zegt dit
[...]
Ik lees alles heel duidelijk. Wat jij aangeeft is de basis voor het kopieren van een user ( - instance). Daarna dien je op te geven WAT er allemaal gekopieerd dient te worden.

Wat die properties betreft. Je ziet dat deze optie gebruikt wordt bij het kopieren van de memberships. Als ik hier meer opties toevoeg werkt het simpel weg niet. Daar doe ik iets fout.
Dit is wat ik al eerder had uitgezocht.

Alleen alle properties achter het Get-User commando toevoegen geeft foutmeldingen.
Get-ADUser -identity ***** -Properties telephoneNumber, Title, Streetaddress, physicalDeliveryOfficeName, HomePage, Fax, Description, co, OfficePhone, PostalCode


Wat doe ik volgens jou anders in mijn regel:

New-ADUser -SamAccountName $NewUser -Name $NewName -GivenName $firstname -Surname $lastname-Instance $DN -Path "$OUDN" -AccountPassword (Read-Host "New Password" -AsSecureString)

Ik heb ook een leuke computer..


  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
Mijn eerste regel zou dan zijn:
code:
1
$User = Get-AdUser -Identity (Read-Host "Copy From Username") -Properties telephoneNumber, Title, Streetaddress, physicalDeliveryOfficeName, HomePage, Fax, Description, co, OfficePhone, PostalCode


Helaas functioneert dit niet!

Ik heb ook een leuke computer..


  • Razwer
  • Registratie: December 2000
  • Laatst online: 14-11 20:46
"het werkt niet" is kort door de bocht. Wat werkt er niet?
ik krijg gewoon output als ik jouw script test
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
PS C:\Users> $Template = Get-AdUser -identity "goodtest05" -Properties telephoneNumber, Title, Streetaddress, physicalDeliveryOfficeName, HomePage, Fax, Description, co, OfficePhone, PostalCode



PS C:\Users> $Template


Description       : 
DistinguishedName : CN=goodtest05,OU=Test,OU=Functional,OU=Accounts,OU=InfrastructureManagement,DC=ad,DC=xxx,DC=nl
Enabled           : True
Fax               : 
GivenName         : 
HomePage          : 
Name              : goodtest05
ObjectClass       : user
ObjectGUID        : 2d3b8d2d-55ec-433e-848e-23250dab7da0
OfficePhone       : 
PostalCode        : 
SamAccountName    : goodtest05
SID               : S-1-5-21-1046319769-833967741-3563887046-525388
StreetAddress     : 
Surname           : 
Title             : 
UserPrincipalName : goodtest05@ad.xxx.nl


edit, ik zie jouw fout al. je gebruikt verkeerde namen voor de properties.
zie deze tabel:
http://social.technet.mic...-extended-properties.aspx
physicalDeliveryOfficeName moet bijvoorbeeld "office" zijn. Zo heb je er nog een paar waar de property naam anders is dan attribute naam.

[ Voor 15% gewijzigd door Razwer op 04-01-2016 15:17 ]

Newton's 3rd law of motion. Amateur moraalridder.


  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
Ik ben erachter waardoor de properties niet meegenomen worden.

In mijn script staat -instance $DN. Als ik dit verander in -instance $User, gaat dit wel goed!! Echter krijg ik dan dezelfde username logon name. Per Windows 2000 is het wel goed.

Mijn code is nu als volgt
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
$User = Get-AdUser -Identity (Read-Host "Copy From Username") -Properties telephoneNumber, Title, Department, State, Streetaddress, City, Country,  physicalDeliveryOfficeName, HomePage, Fax, Description, co, OfficePhone, PostalCode, memberof
$DN = $User.distinguishedName
$OldUser = [ADSI]"LDAP://$DN"
$Parent = $OldUser.Parent
$OU = [ADSI]$Parent
$OUDN = $OU.distinguishedName
$NewUser = Read-Host "New Username"
$firstname = Read-Host "First Name"
$Lastname = Read-Host "Last Name"
$NewName = "$firstname $lastname"


New-ADUser -SamAccountName $NewUser -Name $NewName -GivenName $firstname -Surname $lastname -Instance $DN -Path "$OUDN" -AccountPassword (Read-Host "New Password" -AsSecureString)


Btw.. waardeer je hulp!

Ik heb ook een leuke computer..


  • Razwer
  • Registratie: December 2000
  • Laatst online: 14-11 20:46
-userPrincipalName mee geven dan

edit
dus zoiets
code:
1
2
$upn = $NewUser+"@foo.local"
New-ADUser -SamAccountName $NewUser -userPrincipalName $upn -Name $NewName -GivenName $firstname -Surname $lastname -Instance $DN -Path "$OUDN" -AccountPassword (Read-Host "New Password" -AsSecureString)

[ Voor 81% gewijzigd door Razwer op 04-01-2016 15:40 ]

Newton's 3rd law of motion. Amateur moraalridder.


  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
Ik ga er morgen nog eens naar kijken... Mijn hoofd is gaar! Bedankt voor het meedenken.

Ik krijg de properties allemaal gekopieerd maar niet de groupmemberships. Blijkbaar als ik eindig met "memberof" concentreert hij zich daarop en niet de rest.

Ik ben er even te lang mee bezig.

Ik heb ook een leuke computer..


  • Razwer
  • Registratie: December 2000
  • Laatst online: 14-11 20:46
simpel, 2 stappen plan van maken :)
Iets minder efficient maar werkt wel

Memberof heb je namelijk de expanded property van nodig (staat ook in die spiceworks thread)

Let op de aanpassing in vars die ik heb gemaakt bovenin. Ook heb ik wat properties aangepast volgens deze tabel: http://social.technet.mic...-extended-properties.aspx
PowerShell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$InputUser = Read-Host "Source Username"
$User = Get-AdUser -Identity $InputUser -Properties OfficePhone, Title, Department, State, Streetaddress, City, Country,  Office, HomePage, Fax, Description, co, OfficePhone, PostalCode
$DN = $User.distinguishedName
$OldUser = [ADSI]"LDAP://$DN"
$Parent = $OldUser.Parent
$OU = [ADSI]$Parent
$OUDN = $OU.distinguishedName
$NewUser = Read-Host "New Username"
$firstname = Read-Host "First Name"
$Lastname = Read-Host "Last Name"
$NewName = "$firstname $lastname"
$upn = $NewUser+"@foo.local"

New-ADUser -SamAccountName $NewUser -userPrincipalName $upn -Name $NewName -GivenName $firstname -Surname $lastname -Instance $DN -Path "$OUDN" -AccountPassword (Read-Host "New Password" -AsSecureString)

Get-ADUser -Identity $InputUser -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $NewUser

meer wegen naar Rome: http://mikefrobbins.com/2...her-user-with-powershell/

[ Voor 13% gewijzigd door Razwer op 04-01-2016 20:20 ]

Newton's 3rd law of motion. Amateur moraalridder.


  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
Het probleem is dat als je Instance $DN gebruikt, hij niet de properties meenement. Wél, als je de variabele $User gerbuikt.

Ik ga weer even, met een frisse blik, proberen het script werkend te krijgen ;-)

[ Voor 47% gewijzigd door Tranzy op 05-01-2016 09:21 ]

Ik heb ook een leuke computer..


  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
Nachtje slapen heeft kennelijk geholpen!

Mijn script werkt nu perfect! Hier is het eindresultaat.

PowerShell:
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
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://***/PowerShell/ -Authentication Kerberos  -Credential $UserCredential
Import-PSSession $Session
import-module ActiveDirectory

$Properties = 
 @(
 'telephoneNumber', 
 'Title', 
 'Department', 
 'State', 
 'Streetaddress', 
 'City',
 'Country',
 'physicalDeliveryOfficeName', 
 'HomePage', 
 'Fax', 
 'Description', 
 'co', 
 'OfficePhone', 
 'PostalCode',
 'company'
 )
$User = Get-AdUser -Identity (Read-Host "Copy From Username") -Properties $Properties
$DN = $User.distinguishedName
$OldUser = [ADSI]"LDAP://$DN"
$Parent = $OldUser.Parent
$OU = [ADSI]$Parent
$OUDN = $OU.distinguishedName
$NewUser = Read-Host "New Username"
$upn = $NewUser+"@domain.local"
$firstname = Read-Host "First Name"
$Lastname = Read-Host "Last Name"
$NewName = "$firstname $lastname"


New-ADUser -SamAccountName $NewUser -userPrincipalName $upn -Name $NewName -GivenName $firstname -Surname $lastname -Instance $User -Path "$OUDN" -AccountPassword (ConvertTo-SecureString -AsPlainText "welkom01" -Force)

Get-ADUser -Identity $User -Properties memberof |
Select-Object -ExpandProperty memberof |
Add-ADGroupMember -Members $NewUser

Enable-Mailbox -Identity $NewUser -Alias (Read-Host "Enter Alias")
$Proxy = $(Get-Mailbox $NewUser).LegacyExchangeDN
Set-Mailbox $NewUser -EmailAddresses @{Add="X500:$Proxy"}

Ik heb ook een leuke computer..


  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 28-11 22:51
Nu nog een ander wachtwoord dan "welkom01" kiezen.

  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
mhoogendam schreef op dinsdag 05 januari 2016 @ 10:30:
Nu nog een ander wachtwoord dan "welkom01" kiezen.
Jep absoluut! ;)

Ik wilde eigenlijk nog een optie meegeven dat de gebruiker deze dient te wijzigen bij eerste aanmelding.

Ik heb ook een leuke computer..


  • Oogje
  • Registratie: Oktober 2003
  • Niet online
Tranzy schreef op dinsdag 05 januari 2016 @ 10:46:
[...]


Jep absoluut! ;)

Ik wilde eigenlijk nog een optie meegeven dat de gebruiker deze dient te wijzigen bij eerste aanmelding.
–ChangePasswordAtLogon $true ;)

Any errors in spelling, tact, or fact are transmission errors.


  • Razwer
  • Registratie: December 2000
  • Laatst online: 14-11 20:46
PowerShell:
1
2
3
4
5
6
$ADuser =  Get-ADUser $userID 
    If($ADuser) 
    { 
        Set-adaccountpassword $userID -reset -newpassword (ConvertTo-SecureString -AsPlainText $password -Force) 
        Set-aduser $userID -changepasswordatlogon $true 
    }

https://gallery.technet.m...ser-Password-and-bcd31566

Newton's 3rd law of motion. Amateur moraalridder.


  • Tranzy
  • Registratie: Augustus 2001
  • Laatst online: 25-06 12:21
Ik heb het op deze manier opgelost

..... -AccountPassword (Read-Host "New Password" -AsSecureString) –ChangePasswordAtLogon $true

Op deze manier typen we zelf een nieuw (veilig) wachtwoord. Deze dient alsnog gewijzigd te worden bij aanmelden.

Ik heb ook een leuke computer..

Pagina: 1