Quantcast
Channel: The Official Scripting Guys Forum! forum
Viewing all articles
Browse latest Browse all 15028

Powershell: Set Access Based Enumeration on share in Failover Cluster

$
0
0

Hi guys, 

I'm facing the following problem. Below you see my script to create a shared folder. (My folder share is visible in failover cluster manager, underneath clustergroup TESTSTO01.) 
Now I need to enable Access Based Enumeration on this share. Has anyone a clue how to do that in powershell? (Version 2). 
I also need to make sure that the files and programs are not available offline. 

Thanks in advance! 

$SHARE_READ = 1179817     # 100100000000010101001  

$SHARE_CHANGE = 1245631 # 100110000000100010110     

$SHARE_FULL = 2032127     # 111110000000111111111  

$SHARE_NONE = 1         # 000000000000000000001  

 

$ACETYPE_ACCESS_ALLOWED = 0  

$ACETYPE_ACCESS_DENIED = 1  

$ACETYPE_SYSTEM_AUDIT = 2  

 

$ACEFLAG_INHERIT_ACE = 2  

$ACEFLAG_NO_PROPAGATE_INHERIT_ACE = 4  

$ACEFLAG_INHERIT_ONLY_ACE = 8  

$ACEFLAG_INHERITED_ACE = 16  

$ACEFLAG_VALID_INHERIT_FLAGS = 31  

$ACEFLAG_SUCCESSFUL_ACCESS = 64  

$ACEFLAG_FAILED_ACCESS = 128  

 

 

# New Trustee  

function New-Trustee($Domain, $User)  

{  

$Trustee = ([WMIClass]"\\TESTSTO01\root\cimv2:Win32_Trustee").CreateInstance()

    $Trustee.Domain = $Domain  

    $Trustee.Name = $User  

    if ($User -eq "Administrators")

{$Trustee.SID = @(1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0,32,2,0,0)}

else 

{$Trustee.SID = @(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)} 

    return $Trustee  

}  

 

# New ACE  

function New-ACE($Domain, $User, $Access, $Type, $Flags)  

{  

$ACE = ([WMIClass]"\\TESTSTO01\root\cimv2:Win32_ACE").CreateInstance()

    $ACE.AccessMask = $Access  

    $ACE.AceFlags = $Flags  

    $ACE.AceType = $Type  

    $ACE.Trustee = New-Trustee $Domain $User 

    return $ACE   

}  

 

# Get SD  

function Get-SD

{   

$sd = ([WMIClass]"\\TESTSTO01\root\cimv2:Win32_SecurityDescriptor").CreateInstance()  

$ACE1 = New-ACE -Domain $null -User "Everyone" -Access $SHARE_CHANGE -Type $ACETYPE_ACCESS_ALLOWED -Flags $ACEFLAG_INHERIT_ACE  

$ACE2 = New-ACE -Domain $null -User "Administrators" -Access $SHARE_FULL -Type $ACETYPE_ACCESS_ALLOWED -Flags $ACEFLAG_INHERIT_ACE 

[System.Management.ManagementObject[]] $DACL = $ACE1, $ACE2

$sd.DACL =$DACL

return $sd

}  

 

 

 

# Create-Share  

function Create-Share($ShareName, $Path, $Comment,$Access)  

{  

    $checkShare = (Get-WmiObject Win32_Share -Filter "Name='$ShareName'")  

    if ($checkShare -ne $null) {  

        # "Share exists and will now be deteted!!!"  

        get-WmiObject Win32_Share -Filter "Name='$ShareName'" | foreach-object { $_.Delete() }  

    }  

 

    $wmishare = [WMIClass] "\\TESTSTO01\ROOT\CIMV2:Win32_Share"  

 

$Access = Get-SD

    $R = $wmishare.Create($Path,$Sharename,0,$null,$Comment,"", $Access)  

 

    if ($R.ReturnValue -ne 0) {  

        Write-Error "Error while creating share: " + $R.ReturnValue  

        exit  

    }  

    # Write-Host "Share has been created."  

}  

 

# Create first share with permissons **********************************  

$ShareName = "$Company$"  

$Path = "$Driveletter" + ":\$Company"  

$Comment = ""  

$Domain = $Null 

 

Create-Share $ShareName $Path $Comment $Access

 

 

 


Viewing all articles
Browse latest Browse all 15028

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>