2016-04-07 4 views
0

Klasöre Yeni Grup Uygulanması için: Kullanıcıların bunu görebilmesi içinTek PowerShell Komut Klasör, AD Grupları oluşturun ve ben isteyen kulüpler

  • klasör için Yeni Klasör
  • Seti Hisse Adı oluştur
  • FS-TE yeni pay klasörüne
  • Seti Tam Okuma izinleri Hem grupları uygula AD Grubu FS-TESTSHARE-R
  • AD Grubu FS-TESTSHARE-RW oluşturun
  • oluştur FS-TESTSHARE-RW STSHARE-R
  • Seti Tam Okuma/Hak izinler
  • İşte

Ben etrafta biraz oynadıktan sonra şimdi var, ama istediğim şey Domain Yöneticiler

  • ayarlayın tam erişim izinleri bir şey kaçırmadığımdan emin olmak için. Karar verdim (zamanın param ayarını dışarıda bıraktığımıza, ama daha sonra tekrar gelebilirim. Bu doğru görünüyor mu yoksa senaryoyu yazmanın daha iyi bir yolu var mı?

    beklenmedik

    New-ADGroup 
        -Name "FS-$NAME-RW" 
        -SamAccountName "FS-"+$NAME+"-RW" 
        -GroupCategory Security 
        -GroupScope Global 
        -DisplayName "$NAME Read-Write Access" 
        -Path "CN=$LOCATION,CN=SECURITY GROUPS,CN=FILE SHARE GROUPS,DC=ESG,DC=INTL" 
        -Description "Members of this group have read-write access to the test share" 
    
    New-ADGroup 
        -Name "FS-$NAME-R" 
        -SamAccountName "FS-"+$NAME+"-R" 
        -GroupCategory Security 
        -GroupScope Global 
        -DisplayName "$NAME Read Access" 
        -Path "CN=$LOCATION,CN=SECURITY GROUPS,CN=FILE SHARE GROUPS,DC=ESG,DC=INTL" 
        -Description "Members of this group have read access to the test share" 
    
    
    # create new folder 
    New-Item -Path $Path -ItemType Directory 
    
    # get permissions 
    $acl = Get-Acl -Path $Path 
    
    #Get Security Groups 
    get-adobject -searchbase "CN=SECURITY GROUPS,CN=FILE SHARE GROUPS,DC=ESG,DC=INTL" -ldapfilter {(objectclass=group)} 
    
    # add a new permission 
    $acl.SetAccessRuleProtection($True, $False) 
    
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") 
    $acl.AddAccessRule($rule) 
    
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("esg.intl\Domain Admins","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") 
    $acl.AddAccessRule($rule) 
    
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("esg.intl\"FS-"+$NAME+"-R"","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") 
    $acl.AddAccessRule($rule) 
    
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("esg.intl\"FS-"+$NAME+"-RW"","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") 
    $acl.AddAccessRule($rule) 
    
    # set new permissions 
    $acl | Set-Acl -Path $path 
    

    Ayrıca bazı hatalar içine çalıştırıyorum ve ben bunları düzeltmek için nasıl çalıştığını anlamak emin değilim hakkında hataların bir demet ...

    At C:\Users\A-Shane.Johnson\Desktop\ShareFolderCreation.ps1:44 char:96 
    + ... " -ldapfilter {(objectclass=group)} 
    +     ~ 
    Use `{ instead of { in variable names. 
    At C:\Users\A-Shane.Johnson\Desktop\ShareFolderCreation.ps1:55 char:82 
    + ... ule("esg.intl\"FS-"+$NAME+"-R"","FullControl", "ContainerInherit, ObjectInherit" ... 
    +     ~~~~~~~~~~~~~~~~ 
    Unexpected token 'FS-"+$NAME+"-R""' in expression or statement. 
    At C:\Users\A-Shane.Johnson\Desktop\ShareFolderCreation.ps1:55 char:82 
    + ... ule("esg.intl\"FS-"+$NAME+"-R"","FullControl", "ContainerInherit, ObjectInherit" ... 
    +     ~ 
    Missing closing ')' in expression. 
    At C:\Users\A-Shane.Johnson\Desktop\ShareFolderCreation.ps1:55 char:164 
    + ... "None", "Allow") 
    +     ~ 
    Unexpected token ')' in expression or statement. 
    At C:\Users\A-Shane.Johnson\Desktop\ShareFolderCreation.ps1:58 char:82 
    + ... ule("esg.intl\"FS-"+$NAME+"-RW"","FullControl", "ContainerInherit, ObjectInherit ... 
    +     ~~~~~~~~~~~~~~~~~ 
    Unexpected token 'FS-"+$NAME+"-RW""' in expression or statement. 
    At C:\Users\A-Shane.Johnson\Desktop\ShareFolderCreation.ps1:58 char:82 
    + ... ule("esg.intl\"FS-"+$NAME+"-RW"","FullControl", "ContainerInherit, ObjectInherit ... 
    +     ~ 
    Missing closing ')' in expression. 
    At C:\Users\A-Shane.Johnson\Desktop\ShareFolderCreation.ps1:58 char:165 
    + ... "None", "Allow") 
    +     ~ 
    Unexpected token ')' in expression or statement. 
        + CategoryInfo   : ParserError: (:) [], ParseException 
        + FullyQualifiedErrorId : OpenBraceNeedsToBeBackTickedInVariableName 
    
  • cevap

    1

    Ok, bu nedenle bir kaç şey ben İlk olarak, dize enterpolasyonu ... Bulunduğunuz yer:

    "FS-"+$NAME+"-RW" 
    

    Sadece bu kısaltabilir:

    "FS-$NAME-RW" 
    

    değişken otomatik bir dizeye değişkeni genişletmeye çalışacağız böyle çifte tırnak içinde bulunduğunda. Şartları veya kuralları ele almayacağım, çünkü bunun sadece aşırı karmaşık olacağını düşünüyorum. Bu değişikliğin tek başına, komut dosyanızda olabileceği tüm örneklere uygulandığında, büyük olasılıkla hatalarınızın çoğunu kaldıracağını söylemek yeterlidir. ... ve muhtemelen yeni komutlar yaratır, çünkü birkaç komut doğru bir şekilde yorumlanacaktır.

    Sonraki, komut sözdizimini. İlk iki komutunuz, yeni satırlardan kaçmadıkça ve sorunuza yansıtılmadıysa, büyük ihtimalle bunları beklediğiniz gibi yürütmeyeceksiniz. Eğer parametrelerinizi olduğu gibi dışarıda bırakmak istiyorsanız, bunları hashtables olarak ayarlamayı ve komutu yürütürken hashtabı genişletmeyi öneririm. Böyle bunu yapabilir: Ben bunu açıklama söylemek ve hareket diye,

    $GroupParams= @{ 
        'Name' = "FS-$NAME-RW" 
        'SamAccountName' = "FS-$NAME-RW" 
        'GroupCategory' = "Security" 
        'GroupScope' = "Global" 
        'DisplayName' = "$NAME Read-Write Access" 
        'Path' = "CN=$LOCATION,CN=SECURITY GROUPS,CN=FILE SHARE GROUPS,DC=ESG,DC=INTL" 
        'Description' = "Members of this group have read-write access to the test share" 
    } 
    
    New-ADGroup @GroupParams 
    

    Kişisel LDAPFiltresi çizgi hatası, şey, bu hat gereksiz görünüyor.

    Okuma grubuna FullAccess hakları verdiğinizi unutmayın, muhtemelen bunu ReadAndExecute olarak değiştirmek isteyebilirsiniz.

    Son olarak, ACL'lerinizle ilgili bir sorun yaşarsanız, dosya paylaşımlarında ACL'lerle çalışırken size aynı tavsiyeyi veririm. Ayarlarınızı açıkça tanımlayın, ardından bunları bir erişim kuralı olarak uygulayın.Bir şablon olarak aşağıdaki kullanın: Bir yan not

    $Rights = [System.Security.AccessControl.FileSystemRights]"FullControl" 
    
    $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]"ObjectInherit,ContainerInherit" 
    $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None 
    
    $objType =[System.Security.AccessControl.AccessControlType]::Allow 
    
    $objUser = New-Object System.Security.Principal.NTAccount("IIS_IUSRS") 
    
    $objACE = New-Object System.Security.AccessControl.FileSystemAccessRule($objUser, $Rights, $InheritanceFlag, $PropagationFlag, $objType) 
    
    $objACL = Get-ACL "C:\Temp" 
    
    $objACL.AddAccessRule($objACE) 
    
    Set-ACL "C:\Temp" $objACL 
    

    , gerçekten tüm ağ paylaşımına paylaşım adı ilan etme şey ve ne değil başa asla. Ağ paylaşımını ayarlama hakkında daha fazla bilgi almak için get-help New-SMBShare -Full'u çalıştırmak isteyebilirsiniz.

    +0

    NVM Zaten yapmış olduğum splatting bile yaptım. – Matt

    +0

    Evet, birbirimizden saniyeler içinde gönderildik. Gönderiniz benimkiyle daha güzel biçimlendirilmiş olsa da :) – TheMadTechnician

    +0

    Sanırım ilk meseleyi yayınımda yaptığım gibi genişletmelisin. Tüm dize, göstermediğiniz fazladan teklifleri içeren "esg.intl \" FS - "+ $ NAME +" - RW "" idi. "Esg.intl \ FS- $ NAME-RW" olmalıdır " – Matt

    İlgili konular