Progression/2-SmbShareWin7.ps1

# In Windows 7, it required a combination of PowerShell, WMI, and .NET
$share = [WmiClass] 'Win32_Share'
$dir = "c:\temp" 
$share.Create($dir, "a1share", 0)
$share = Get-WmiObject Win32_Share -Filter "Name=`"a1share`""
$user = New-Object System.Security.Principal.NTAccount("ianlucas")
$SID = $user.Translate([System.Security.Principal.SecurityIdentifier])
$SIDBytes = New-Object byte[] $sid.BinaryLength
$SID.GetBinaryForm($SIDBytes, 0)
$sd = ([WmiClass] 'Win32_SecurityDescriptor').CreateInstance()
$trustee = ([WmiClass] 'Win32_Trustee').CreateInstance()
$ACE = ([WmiClass] 'Win32_ACE').CreateInstance()
$trustee.Name = "ianlucas"
$trustee.Domain = $hostname
$trustee.SID = $SIDBytes
$ace.Trustee = $trustee
$ace.AceType = [Security.AccessControl.AceType]::AccessAllowed
$ace.AccessMask = [Security.AccessControl.FileSystemRights]::FullControl
$sd.DACL += $ace
$share.SetShareInfo($null,$null,$sd)