アクセス権をパワーシェルで設定したい

##まずは現状の確認コマンド
```
get-acl -Path \\1.1.1.1\share\dir | fl
```


###継承の無効化

```
$path = C:\test
$ACL =  get-acl -Path $path
$ACL.SetAccessRuleProtection($true,$true)
$ACL | set-acl -Path $path
```

####ACLのオブジェクトで何ができるか見てみる。

```
$objACL =  get-acl -Path \\1.1.1.1\share\dir
Get-Member -InputObject $objACL

Name                            MemberType     Definition                                                            
----                            ----------     ----------                                                            
Access                          CodeProperty   System.Security.AccessControl.AuthorizationRuleCollection Access{ge...
CentralAccessPolicyId           CodeProperty   System.Security.Principal.SecurityIdentifier CentralAccessPolicyId{...
CentralAccessPolicyName         CodeProperty   System.String CentralAccessPolicyName{get=GetCentralAccessPolicyName;}
Group                           CodeProperty   System.String Group{get=GetGroup;}                                    
Owner                           CodeProperty   System.String Owner{get=GetOwner;}                                    
Path                            CodeProperty   System.String Path{get=GetPath;}                                      
Sddl                            CodeProperty   System.String Sddl{get=GetSddl;}                                      
AccessRuleFactory               Method         System.Security.AccessControl.AccessRule AccessRuleFactory(System.S...
AddAccessRule                   Method         void AddAccessRule(System.Security.AccessControl.FileSystemAccessRu...
AddAuditRule                    Method         void AddAuditRule(System.Security.AccessControl.FileSystemAuditRule...
AuditRuleFactory                Method         System.Security.AccessControl.AuditRule AuditRuleFactory(System.Sec...
Equals                          Method         bool Equals(System.Object obj)                                        
GetAccessRules                  Method         System.Security.AccessControl.AuthorizationRuleCollection GetAccess...
GetAuditRules                   Method         System.Security.AccessControl.AuthorizationRuleCollection GetAuditR...
GetGroup                        Method         System.Security.Principal.IdentityReference GetGroup(type targetType) 
GetHashCode                     Method         int GetHashCode()                                                     
GetOwner                        Method         System.Security.Principal.IdentityReference GetOwner(type targetType) 
GetSecurityDescriptorBinaryForm Method         byte[] GetSecurityDescriptorBinaryForm()                              
GetSecurityDescriptorSddlForm   Method         string GetSecurityDescriptorSddlForm(System.Security.AccessControl....
GetType                         Method         type GetType()                                                        
ModifyAccessRule                Method         bool ModifyAccessRule(System.Security.AccessControl.AccessControlMo...
ModifyAuditRule                 Method         bool ModifyAuditRule(System.Security.AccessControl.AccessControlMod...
PurgeAccessRules                Method         void PurgeAccessRules(System.Security.Principal.IdentityReference i...
PurgeAuditRules                 Method         void PurgeAuditRules(System.Security.Principal.IdentityReference id...
RemoveAccessRule                Method         bool RemoveAccessRule(System.Security.AccessControl.FileSystemAcces...
RemoveAccessRuleAll             Method         void RemoveAccessRuleAll(System.Security.AccessControl.FileSystemAc...
RemoveAccessRuleSpecific        Method         void RemoveAccessRuleSpecific(System.Security.AccessControl.FileSys...
RemoveAuditRule                 Method         bool RemoveAuditRule(System.Security.AccessControl.FileSystemAuditR...
RemoveAuditRuleAll              Method         void RemoveAuditRuleAll(System.Security.AccessControl.FileSystemAud...
RemoveAuditRuleSpecific         Method         void RemoveAuditRuleSpecific(System.Security.AccessControl.FileSyst...
ResetAccessRule                 Method         void ResetAccessRule(System.Security.AccessControl.FileSystemAccess...
SetAccessRule                   Method         void SetAccessRule(System.Security.AccessControl.FileSystemAccessRu...
SetAccessRuleProtection         Method         void SetAccessRuleProtection(bool isProtected, bool preserveInherit...
SetAuditRule                    Method         void SetAuditRule(System.Security.AccessControl.FileSystemAuditRule...
SetAuditRuleProtection          Method         void SetAuditRuleProtection(bool isProtected, bool preserveInherita...
SetGroup                        Method         void SetGroup(System.Security.Principal.IdentityReference identity)   
SetOwner                        Method         void SetOwner(System.Security.Principal.IdentityReference identity)   
SetSecurityDescriptorBinaryForm Method         void SetSecurityDescriptorBinaryForm(byte[] binaryForm), void SetSe...
SetSecurityDescriptorSddlForm   Method         void SetSecurityDescriptorSddlForm(string sddlForm), void SetSecuri...
ToString                        Method         string ToString()                                                     
PSChildName                     NoteProperty   string PSChildName=dir2                                               
PSParentPath                    NoteProperty   string PSParentPath=Microsoft.PowerShell.Core\FileSystem::\\10.10.1...
PSPath                          NoteProperty   string PSPath=Microsoft.PowerShell.Core\FileSystem::\\10.10.107.102...
PSProvider                      NoteProperty   ProviderInfo PSProvider=Microsoft.PowerShell.Core\FileSystem          
AccessRightType                 Property       type AccessRightType {get;}                                           
AccessRuleType                  Property       type AccessRuleType {get;}                                            
AreAccessRulesCanonical         Property       bool AreAccessRulesCanonical {get;}                                   
AreAccessRulesProtected         Property       bool AreAccessRulesProtected {get;}                                   
AreAuditRulesCanonical          Property       bool AreAuditRulesCanonical {get;}                                    
AreAuditRulesProtected          Property       bool AreAuditRulesProtected {get;}                                    
AuditRuleType                   Property       type AuditRuleType {get;}                                             
AccessToString                  ScriptProperty System.Object AccessToString {get=$toString = "";...                  
AuditToString                   ScriptProperty System.Object AuditToString {get=$toString = "";...                   
```

（気が向いたら続きを書きます。）

##参考文献
https://saborin.hatenablog.com/entry/2018/05/01/150000
https://saborin.hatenablog.com/category/%E5%82%99%E5%BF%98%E9%8C%B2(PowerShell)
https://www.haruru29.net/blog/how-to-configure-smb-share-folder-using-powershell/#PowerShell-5
and
https://docs.microsoft.com/en-us/archive/msdn-magazine/2008/november/access-control-understanding-windows-file-and-registry-permissions