OFFICIUM INSERVIO IT
Your reliable partner for your business software...
Sage 100 Ordner-Berechtigungen (Ntfs) prüfen / Check directory permissions (Ntfs)
(alle Versionen/all versions)
Mittwoch, 25. Oktober 2023
Powershell Script für Prüfung der Rechte
Powershell Script für Übernehmen von Basis-Ordner-Rechten auf alle untergeordneten Elemente
Deutsch
Powershell Script für Prüfung der Rechte
Mit nachfolgendem Powershell Script können die NTFS Rechte auf das Sage Installationsverzeichnis ausgewertet werde
Man speichert das Script in einem Ordner z.B. als "PowershellRights.ps1" und startet dann die PowerShell im Administrator-Modus.

Dann das Script aufrufen. Das Script erzeugt die Datei "C:\Permissions_Ntfs_Sage100.csv" mit den entsprechenden Informationen.
Script:
$OutFile = "C:\Permissions_Ntfs_Sage100.csv"
$Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags"
Del $OutFile
Add-Content -Value $Header -Path $OutFile
$RootPath = "c:\Program Files (x86)\Sage\"
$Folders = dir $RootPath -recurse | where {$_.psiscontainer -eq $true}
foreach ($Folder in $Folders){
$ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access }
Foreach ($ACL in $ACLs){
$OutInfo = $Folder.Fullname + "," + $ACL.IdentityReference + "," + $ACL.AccessControlType + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags
Add-Content -Value $OutInfo -Path $OutFile
}}Powershell Script für Übernehmen von Basis-Ordner-Rechten auf alle untergeordneten Elemente
Mit nachfolgendem Powershell Script können die NTFS Rechte , die auf einem Haupt-Ordner gesetzt sind , vollautomatisch rekursiv auf alle untergeordneten Verzeichnisse und Dateien übertragen werden.
Dies ist besonders nützlich , da somit lediglich auf einem übergeordneten Ordner alles eingestellt werden muss.
Das Script protokolliert alle Probleme in einer Textdatei.
Vorbereitet ist das Script für den Roaming-Ordner eines Users , in dem Fall Username "SAG". Dieser Roaming-Ordner macht regelmäßig in der Sage 100 Probleme , wenn die Rechte für einen Benutzer nicht vorliegen.
# This script applies all rights of a main folder to all children in the folder recursively. All errors are reported into a log file.
# Just set the rights you need on the main level , like on the folder "C:\Users\SAG\AppData\Roaming" , for all required users.
# Then execute this script with admin rights!
param (
[string]$TargetPath = "C:\Users\SAG\AppData\Roaming",
[string]$LogFile = "C:\SAGRights_problems.txt"
)
if (Test-Path -LiteralPath $LogFile) {
Clear-Content -LiteralPath $LogFile -ErrorAction SilentlyContinue
}
$items = Get-ChildItem -LiteralPath $TargetPath -Recurse -Force
foreach ($item in $items) {
try {
$acl = Get-Acl -LiteralPath $item.FullName -ErrorAction Stop
$acl.SetAccessRuleProtection($false, $false)
$explicitRules = $acl.Access | Where-Object { $_.IsInherited -eq $false }
foreach ($rule in $explicitRules) {
$acl.RemoveAccessRule($rule) | Out-Null
}
Set-Acl -LiteralPath $item.FullName -AclObject $acl -ErrorAction Stop
}
catch {
$errorMessage = "Failed to update rights for: '$($item.FullName)' - Error: $($_.Exception.Message)"
Add-Content -LiteralPath $LogFile -Value $errorMessage
}
}
Write-Host "Process completed. Please check $LogFile for any errors."Weitere wichtige Ordner
Es sollte beachtet werden , dass der im Script genannte Ordner lediglich einer der wichtigsten Ordner der Sage Installation ist.
Es gibt jedoch noch jede Menge weitere Ordner , die man ebenfalls prüfen sollte.
Microsoft Tool "AccessEnum"
Alternativ kann man das Microsoft Tool "AccessEnum" aus den "Sysinternals" verwenden.

