Toon posts:

Powershell / Nieuwe gebruiker aanmaken en rechten toekennen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Een vraag m.b.t. een powershell script dat ik aan het maken ben om mappen aan te maken op een server t.b.v. de homedrives voor gebruikers.

Wanneer ik onderstaande code uitvoer, wordt de gebruiker aangemaakt, de map aangemaakt en de rechten toegekend aan de map. Wanneer ik de rechten controleer heeft de betreffende gebruiker volledige rechten op de map, echter mag de gebruiker de map niet openen. Wanneer ik in Windows de rechten middels de standaard gui verwijder en opnieuw toevoeg, werkt het wel.
Heeft iemand van jullie een idee waar dit mis zou kunnen gaan?
Onderstaand mijn code, het is niet de volledige code, maar wel het deel waarin alle "magie" plaatsvindt.

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
Function Create-User
{
    
    param ($username = $x_username.Text,
        $password = $x_password.Text,
        $firstname = $x_firstname.Text,
        $lastname = $x_lastname.Text,
        $administratie = $x_administratie.Text,
        $company = $x_company.Text,
        $radar = $x_radar.Text
    );
    
    $error.clear()
    try { $userexists = Get-ADUser -Identity $username }
    catch
    {
        
        $password = ConvertTo-SecureString $password -AsPlainText -Force
        $HomeDirectory = "\\servername\HomeFolderName\$username"
        NEW-ITEM –path $HomeDirectory -type directory -force
        Set-ItemProperty $HomeDirectory -name IsReadOnly -value $false
        New-ADUser -Name $username -SamAccountName $username -Path "OU=***,OU=***,DC=***,DC=***" -GivenName $firstname -Surname $lastname -DisplayName "$firstname $lastname" -AccountPassword $password -Enabled $true -PasswordNeverExpires $true -Description "$administratie - $radar" -Company $company -HomeDrive "H:" -HomeDirectory $HomeDirectory
        $Acl = Get-Acl $HomeDirectory
        $Ar = New-Object system.Security.AccessControl.FileSystemAccessRule($username, "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
        $Acl.Setaccessrule($Ar)
        Set-Acl $HomeFolder $Acl

Alle reacties


Acties:
  • +1 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 14:30

ElCondor

Geluk is Onmisbaar

Dit heb ik ook wel eens meegemaakt, weet alleen niet meer precies of ik het toen ook opgelost heb.

Is het mogelijk dat het met AD replicatie te maken heeft? Dat er wat tijd overheen moet gaan voordat je de rechten op de homefolder toekent? Wellicht een sleep voor een minuut inbouwen tussen het aanmaken van het account en het aanmaken van de homefolder en het toekennen van de rechten?

Ik heb wel vaker dat ik een AD object aanmaak en dan met dat object iets wil doen, maar dat AD het object dan nog niet kent. Ligt er ook een beetje aan hoe ingewikkeld je AD infra is.

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • +1 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 17:20
De eerste stap mbt het achterhalen van de oorzaak is je script (of in ieder geval het deel waar het mis gaat) regel voor regel uit te voeren. In ISE kan dat natuurlijk met F8 en dan regel voor regel de boel uitvoeren ; wat ook een optie is is gewoon de debugger aanzetten in ISE en een breakpoint gebruiken.
Als het dan wel werkt dan is het hoogstwaarschijnlijk - zoals ElCondor al zei - een probleem met je "timing". Als het dan ook niet de gewenste ACL entry oplevert dan moet je de ACL object in je script controleren.

Acties:
  • +1 Henk 'm!

Verwijderd

Topicstarter
Een kleine update: Het probleem is inmiddels opgelost door in plaats van het set-acl commando het icacls commando te gebruiken, het laatste deel van de code dat de rechten toepast ziet er dan als volgt uit:

PowerShell:
1
2
icacls $HomeDirectory /inheritance:d
&icacls $($HomeDirectory) /grant ***.***\$($username):"(oi)(ci)m"


Hiermee worden (op het oog) exact dezelfde rechten toegepast, alleen werkt het nu wel.
Bedankt voor jullie reacties!