Freigabe Informationen via Powershell Sammeln
Moin,
eigentlich wollte ich mir mit diesem Skript alle Freigaben und die Freigabeberechtigungen anzeigen lassen.
Allerdings ist der Output nicht wie ich es mir erhofft hatte. Ich sehe nur die letzte Freigabe und das mehrmals.
Hat jemand ein Tipp? Danke schonmal
eigentlich wollte ich mir mit diesem Skript alle Freigaben und die Freigabeberechtigungen anzeigen lassen.
Allerdings ist der Output nicht wie ich es mir erhofft hatte. Ich sehe nur die letzte Freigabe und das mehrmals.
Hat jemand ein Tipp? Danke schonmal
$Serverliste = "Testrechner1"
$FinalResult = @()
foreach ($Server in $ServerListe) {
$tempObj = "" | Select-Object Server,FreigabeName,FreigabePfad,FreigabeStatus,Beschreibung,Benutzerkonto,FreigabeTyp,Freigaberechte
try {
$Shares =Get-SmbShare -CimSession $Server | select Name,Path,ShareState,Description
foreach($Share in $Shares){
$ShareRights = Get-SmbShareAccess -CimSession $Server $Share.Name | select-object Name,AccountName,AccessControlType,AccessRight,PSComputerName
$tempObj.Server = $ShareRights.PSComputerName
$tempObj.FreigabeName = $Share.Name
$tempObj.FreigabePfad = $Share.Path
$tempObj.FreigabeStatus = $Share.ShareState
$tempObj.Beschreibung = $Share.Description
$tempObj.Benutzerkonto = $ShareRights.AccountName -join " / "
$tempObj.FreigabeTyp = $ShareRights.AccessControlType
$tempObj.Freigaberechte = $ShareRights.AccessRight -join " / "
$FinalResult += $tempObj
}
}
catch {
$tempObj.Server = ""
$tempObj.FreigabeName = ""
$tempObj.FreigabePfad = ""
$tempObj.Beschreibung = ""
}
#$FinalResult += $tempObj
}
return $FinalResult
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 24030146943
Url: https://administrator.de/contentid/24030146943
Ausgedruckt am: 21.11.2024 um 20:11 Uhr
7 Kommentare
Neuester Kommentar
Morsche.
Zeile 5 nach Zeile 11 in die Share-Schleife verschieben, denn sonst änderst du für jedes Share immer wieder das selbe Objekt und erstellst kein neues 😉.
Deswegen sind am Ende alle Objekte im
Array gleich wie das letzte, weil es die selben Instanzen sind ...
Der Jung hier hat gestern den selben Fehler begangen
Problem mit verschachtelten ForEachs in Powershell
Gruß pp.
Zeile 5 nach Zeile 11 in die Share-Schleife verschieben, denn sonst änderst du für jedes Share immer wieder das selbe Objekt und erstellst kein neues 😉.
Deswegen sind am Ende alle Objekte im
Array gleich wie das letzte, weil es die selben Instanzen sind ...
Der Jung hier hat gestern den selben Fehler begangen
Problem mit verschachtelten ForEachs in Powershell
Gruß pp.
Servus,
evtl. möchtest Du noch ein wenig tiefer rein schauen, in einzelne Freigaben bzw. Ordner.
Dafür habe ich bei uns, nebst anderen, auch dieses Script im Einsatz:
evtl. möchtest Du noch ein wenig tiefer rein schauen, in einzelne Freigaben bzw. Ordner.
Dafür habe ich bei uns, nebst anderen, auch dieses Script im Einsatz:
$suchordner = "freigabe"
$objects = Get-ChildItem -Path $suchordner -Recurse | ?{$_.PSIsContainer}
$arrPerm = @()
foreach ($obj in $objects){
$rules = (get-acl $obj.FullName).Access
foreach($rule in $rules){
$arrPerm += New-Object PSObject -Property @{Ordner=$obj.FullName;Identity=$rule.IdentityReference;Typ=$rule.AccessControlType;Rechte=$rule.FileSystemRights;Vererbt=$rule.IsInherited}
}
}
$arrPerm | ft Ordner,Identity,Typ,Rechte,Vererbt | Out-File c:\[OUTPUT].txt
Servus,
zur Gestaltungsfrage...
Du hast die Wahl.
Zeile 33-47
Das ist auch gleichzeitig noch ein anderes Script welches wir nutzen.
zur Gestaltungsfrage...
Du hast die Wahl.
Zeile 33-47
# Ordner der gescannt werden soll
$ORDNER = "C:\Temp"
# Ausgabe-Datei (HTML)
$OUTPUT = $env:USERPROFILE + "\Desktop\Berechtigungen.html"
function List-FolderRights{
param(
[parameter(mandatory=$true)][string]$RootFolder,
[bool]$IncludeInheritedRights = $true
)
$accessrules = @()
$folders = gci $RootFolder -Recurse | ?{$_.PSIsContainer}
foreach($folder in $folders){
try{
$acl = Get-Acl $folder.FullName
$acl.GetAccessRules($true,$IncludeInheritedRights,[System.Security.Principal.NTAccount]) | %{
$accessrules += New-Object PSObject -Property @{
"Folder" = $folder.FullName
"Account" = $_.IdentityReference
"Rights" = $_.FileSystemRights
"AccessControlType" = $_.AccessControlType
#"InheritanceFlags" = $_.InheritanceFlags
}
}
}catch{write-host $_.Exception.Message -ForegroundColor Red}
}
return $accessrules
}
$result = List-FolderRights $ORDNER -IncludeInheritedRights $false | sort Folder,Account | select Folder,Account,Rights,AccessControlType,InheritanceFlags
# OUTPUT OPTIONS --------------------------------------
# Output to Console
# $result | ft -AutoSize -Wrap -GroupBy Folder
# Output to GridView
# $result | out-gridview
# Output to CSV
# $result | export-csv "C:\temp\folderrights.csv" -NoType -Delimiter ";" -Encoding UTF8
# Output to very simple html table
# $result | Convertto-HTML -Title "Berechtigungen" | out-file "C:\temp\folderrights.html" -Encoding UTF8
#-------------------------------------------------------------
# HTML Output
$html = @"
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Berechtigungen</title>
<style type="text/css">
body {
font-family: Verdana, Geneva, sans-serif;
font-size: 13px;
}
H1{font-size:1.8em}
table td {
vertical-align:middle;
}
th {
text-align: left;
background-color: #666;
color: white;
height: 20px;
padding: 5px;
}
tr.bodyrow td{
height: 20px;
border-bottom-width: 1px;
border-bottom-style: dashed;
border-bottom-color: #CCC;
}
tr.grouprow td {
height: 20px;
border-bottom-width: 1px;
border-bottom-style: dashed;
border-bottom-color: #CCC;
background-color: #96B0F5;
padding: 2px;
font-weight: bold;
color: #333;
}
</style>
</head>
<body>
<h1>Übersicht der Berechtigungen</h1>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Folder</th>
<th>Account</th>
<th>Rights</th>
<th>Type</th>
<th>InheritanceFlags</th>
</tr>
$($result | group Folder | %{
@"
<tr class="grouprow">
<td colspan="5">Ordner: $($_.Name)</td>
</tr>
"@
$($_.Group | %{
@"
<tr class="bodyrow">
<td>$($_.Folder)</td>
<td>$($_.Account)</td>
<td>$($_.Rights)</td>
<td>$($_.AccessControlType)</td>
<td>$($_.InheritanceFlags)</td>
</tr>
"@
})
})
</table>
</body>
</html>
"@ | out-file $OUTPUT -Encoding UTF8
Start-Process $OUTPUT
Das ist auch gleichzeitig noch ein anderes Script welches wir nutzen.
Was dann wohl von hier stammt.
Vergebene Rechte dokumentieren - Gibt es hierfür ein anwenderfreundliches Tool?
Zitat von @puderpader:
Was dann wohl von hier stammt.
Vergebene Rechte dokumentieren - Gibt es hierfür ein anwenderfreundliches Tool?
Was dann wohl von hier stammt.
Vergebene Rechte dokumentieren - Gibt es hierfür ein anwenderfreundliches Tool?
🤣..Nee tatsächlich nicht.
Hatte ich damals in den tiefen des Netzes gefunden und für "gut" bewertet.