Would someone be able to assist in setting this script up for a multi domain environment? Thank you.
$computers = Get-Content $loc\list.txt;
function Get-AllSharePermissions
{
param (
[parameter(Mandatory=$true,ValueFromPipeline=$true)]
[string]$computername
)
$ShareSec = Get-WmiObject -Class Win32_LogicalShareSecuritySetting -ComputerName $computername
$myCol = @()
foreach ($ShareS in $ShareSec)
{
$SecurityDescriptor = $ShareS.GetSecurityDescriptor()
ForEach ($DACL in $SecurityDescriptor.Descriptor.DACL)
{
$myObj = “” | select Computername, Name, Domain, ID, AccessMask, AceType
$myObj.Computername = $Computername
$myObj.Name = $ShareS.Name
$myObj.Domain = $DACL.Trustee.Domain
$myObj.ID = $DACL.Trustee.Name
Switch ($DACL.AccessMask)
{
2032127 {$AccessMask = “FullControl”}
1179785 {$AccessMask = “Read”}
1180063 {$AccessMask = “Read, Write”}
1179817 {$AccessMask = “ReadAndExecute”}
-1610612736 {$AccessMask = “ReadAndExecuteExtended”}
1245631 {$AccessMask = “ReadAndExecute, Modify, Write”}
1180095 {$AccessMask = “ReadAndExecute, Write”}
268435456 {$AccessMask = “FullControl (Sub Only)”}
default {$AccessMask = $DACL.AccessMask}
}
$myObj.AccessMask = $AccessMask
Switch ($DACL.AceType)
{
0 {$AceType = “Allow”}
1 {$AceType = “Deny”}
2 {$AceType = “Audit”}
}
$myObj.AceType = $AceType
Clear-Variable AccessMask -ErrorAction SilentlyContinue
Clear-Variable AceType -ErrorAction SilentlyContinue
$myCol += $myObj
}
}
Return $myCol
}
foreach($computer in $computers) {$computer | Get-AllSharePermissions | Export-Csv “$loc\1.csv” -Append -NoTypeInformation -force}