Skip to content

Commit 24e349c

Browse files
authored
Update Get-Shares.psm1
1 parent 746cdf0 commit 24e349c

1 file changed

Lines changed: 66 additions & 66 deletions

File tree

‎Modules/Get-Shares.psm1‎

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -63,84 +63,84 @@ function Get-Shares {
6363
$stopwatch = New-Object System.Diagnostics.Stopwatch
6464
$stopwatch.Start()
6565

66-
$PermissionFlags = @{
67-
0x1 = "Read-List"
68-
0x2 = "Write-Create"
69-
0x4 = "Append-Create Subdirectory"
70-
0x20 = "Execute file-Traverse directory"
71-
0x40 = "Delete child"
72-
0x10000 = "Delete"
73-
0x40000 = "Write access to DACL"
74-
0x80000 = "Write Owner"
75-
}
66+
$accessMask = [Ordered]@{
67+
[uint32]'0x80000000' = 'GenericRead'
68+
[uint32]'0x40000000' = 'GenericWrite'
69+
[uint32]'0x20000000' = 'GenericExecute'
70+
[uint32]'0x10000000' = 'GenericAll'
71+
[uint32]'0x02000000' = 'MaximumAllowed'
72+
[uint32]'0x01000000' = 'AccessSystemSecurity'
73+
[uint32]'0x00100000' = 'Synchronize'
74+
[uint32]'0x00080000' = 'WriteOwner'
75+
[uint32]'0x00040000' = 'WriteDAC'
76+
[uint32]'0x00020000' = 'ReadControl'
77+
[uint32]'0x00010000' = 'Delete'
78+
[uint32]'0x00000100' = 'WriteAttributes'
79+
[uint32]'0x00000080' = 'ReadAttributes'
80+
[uint32]'0x00000040' = 'DeleteChild'
81+
[uint32]'0x00000020' = 'Execute/Traverse'
82+
[uint32]'0x00000010' = 'WriteExtendedAttributes'
83+
[uint32]'0x00000008' = 'ReadExtendedAttributes'
84+
[uint32]'0x00000004' = 'AppendData/AddSubdirectory'
85+
[uint32]'0x00000002' = 'WriteData/AddFile'
86+
[uint32]'0x00000001' = 'ReadData/ListDirectory'
87+
}
7688
}
7789

7890
process{
7991

80-
$SharesArray = Get-WmiObject -class Win32_share
92+
$Shares = Get-SmbShare
93+
$ResultsArray = foreach ($Share in $Shares) {
8194

82-
if ($SharesArray) {
95+
$ShareAccessArray = Get-SmbShareAccess -InputObject $Share
8396

84-
$ResultsArray = foreach ($Share in $SharesArray) {
85-
86-
$ShareName = $Share.Name
87-
88-
try {
89-
$ShareSettings = Get-WmiObject -class Win32_LogicalShareSecuritySetting -Filter "Name='$ShareName'"
90-
91-
$DACLArray = $ShareSettings.GetSecurityDescriptor().Descriptor.DACL
97+
$SharePermissions = ""
98+
99+
foreach ($ShareAccess in $ShareAccessArray) {
100+
101+
$SharePermissions += "{0} - {1} - {2}`n" -f $ShareAccess.AccountName, $ShareAccess.AccessControlType, $ShareAccess.AccessRight
102+
}
92103

93-
foreach ($DACL in $DACLArray) {
104+
105+
try{ $NTFSAccessArray = Get-Acl -Path $Share.Path } catch{}
106+
107+
$NTFSPermissions = ""
108+
109+
foreach ($NTFSAccess in $NTFSAccessArray.Access) {
110+
111+
if ($NTFSAccess.FileSystemRights.value__ -match "-\d+"){
112+
$NTFSAccessFileSystemRights = $accessMask.Keys |
113+
Where-Object { $NTFSAccess.FileSystemRights.value__ -band $_ } |
114+
ForEach-Object { $accessMask[$_] }
115+
$NTFSAccessFileSystemRights = $NTFSAccessFileSystemRights -join ", "
116+
}
117+
else
118+
{
119+
$NTFSAccessFileSystemRights = $NTFSAccess.FileSystemRights
120+
}
121+
122+
$NTFSPermissions += "{0} - {1} - {2}`n" -f $NTFSAccess.IdentityReference.Value, $NTFSAccess.AccessControlType, $NTFSAccessFileSystemRights
123+
}
94124

95-
$TrusteeName = $DACL.Trustee.Name
96-
$TrusteeDomain = $DACL.Trustee.Domain
97-
$TrusteeSID = $DACL.Trustee.SIDString
125+
$output = New-Object -TypeName PSObject
98126

99-
$DACLAceType = ""
127+
$output | Add-Member -MemberType NoteProperty -Name Name -Value $Share.Name
128+
$output | Add-Member -MemberType NoteProperty -Name Path -Value $Share.Path
129+
$output | Add-Member -MemberType NoteProperty -Name Description -Value $Share.Description
130+
$output | Add-Member -MemberType NoteProperty -Name SharePermissions -Value $SharePermissions
131+
$output | Add-Member -MemberType NoteProperty -Name NTFSPermissions -Value $NTFSPermissions
100132

101-
# 1 Deny 0 Allow
102-
if ($DACL.AceType)
103-
{ $DACLAceType = "Deny" }
104-
else
105-
{ $DACLAceType = "Allow" }
106-
107-
$SharePermission = foreach ($Key in $PermissionFlags.Keys) { # Convert AccessMask to human-readable format
108-
109-
if ($Key -band $DACL.AccessMask) {
110-
111-
$PermissionFlags[$Key]
112-
}
113-
}
114-
}
115-
} catch{}
116-
117-
$output = New-Object -TypeName PSObject
118-
119-
$output | Add-Member -MemberType NoteProperty -Name Computer -Value $Share.PSComputerName
120-
$output | Add-Member -MemberType NoteProperty -Name Name -Value $Share.Name
121-
$output | Add-Member -MemberType NoteProperty -Name Path -Value $Share.Path
122-
$output | Add-Member -MemberType NoteProperty -Name DESCRIPTION -Value $Share.DESCRIPTION
123-
$output | Add-Member -MemberType NoteProperty -Name TrusteeName -Value $TrusteeName
124-
$output | Add-Member -MemberType NoteProperty -Name TrusteeDomain -Value $TrusteeDomain
125-
$output | Add-Member -MemberType NoteProperty -Name TrusteeSID -Value $TrusteeSID
126-
$output | Add-Member -MemberType NoteProperty -Name AccessType -Value $DACLAceType
127-
$output | Add-Member -MemberType NoteProperty -Name AccessMask -Value $DACL.AccessMask
128-
$output | Add-Member -MemberType NoteProperty -Name SharePermissions -Value ($SharePermission -join ", ")
129-
130-
$output
131-
132-
}
133-
134-
foreach ($Result in $ResultsArray) {
135-
136-
$Result | Add-Member -MemberType NoteProperty -Name "Host" -Value $env:COMPUTERNAME
137-
$Result | Add-Member -MemberType NoteProperty -Name "DateScanned" -Value $DateScanned
138-
$Result | Add-Member -MemberType NoteProperty -Name "ModuleVersion" -Value $ModuleVersion
139-
}
133+
$output
134+
}
135+
136+
foreach ($Result in $ResultsArray) {
140137

141-
return $ResultsArray | Select-Object Host, DateScanned, Name, Path, Description, TrusteeName,
142-
TrusteeDomain, TrusteeSID, AccessType, AccessMask, SharePermissions
138+
$Result | Add-Member -MemberType NoteProperty -Name "Host" -Value $env:COMPUTERNAME
139+
$Result | Add-Member -MemberType NoteProperty -Name "DateScanned" -Value $DateScanned
140+
$Result | Add-Member -MemberType NoteProperty -Name "ModuleVersion" -Value $ModuleVersion
143141
}
142+
143+
return $ResultsArray | Select-Object Host, DateScanned, Name, Path, Description, SharePermissions, NTFSPermissions
144144
}
145145

146146
end{

0 commit comments

Comments
 (0)