SubPort 0 Geschrieben 22. Januar 2019 Melden Teilen Geschrieben 22. Januar 2019 Hallo, ich möchte die Owner mehrerer Ordner auf einem DFS-Share auslesen. Ich habe diesen Beitrag gefunden: Allerdings klappt es 'JEIN'. Er liest etwas aus, aber in der csv ist nur eine Spalte (Tabelle) mit Zahlen. Bsp.: 9e210fe47d09416682b841769c78b8a3,,,,,. Die sind dann untereinander mit 2167 Zeilen. Mehr nicht. Dann habe ich noch dieses PS gefunden: $RootPath = "\\yourserver\yourshare" $LogFile = "C:\Temp\Test.csv" gci $rootpath -Directory | select Fullname,@{n='Owner';e={(get-acl $_.Fullname).Owner}} | export-csv $logfile -NoType -Delimiter ";" -Encoding UTF8 Hier hat er das Problem mit dem Cmdlet -Directory. Die Meldung ist: Get-ChildItem : A parameter cannot be found that matches parameter name 'Directory'. At line:1 char:25 + gci $rootpath -Directory <<<< | select Fullname,@{n='Owner';e={(get-acl $_.Fullname).Owner}} | export-csv $logfile -NoType -De limiter ";" -Encoding UTF8 + CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand Kann mir jemand helfen? Danke schon mal und vG Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 22. Januar 2019 Melden Teilen Geschrieben 22. Januar 2019 Get-Childitem kennt keinen Ordner. Du musst mit Where-Objct (bzw. ?) einschränken. Get-Childitem | ? { $_.PsIsContainer } Zitieren Link zu diesem Kommentar
SubPort 0 Geschrieben 22. Januar 2019 Autor Melden Teilen Geschrieben 22. Januar 2019 Hi Dukel, danke. Wo genau soll ich den von dir genannten Befehl einbauen? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 22. Januar 2019 Melden Teilen Geschrieben 22. Januar 2019 Schau dir mal die Grundlagen der Powershell an. Speziell das Pipelining. Get-Childitem $rootpath | ? { $_.PsIsContainer } | select Fullname,@{n='Owner';e={(get-acl $_.Fullname).Owner}} | export-csv $logfile -NoType -Delimiter ";" -Encoding UTF8 Zitieren Link zu diesem Kommentar
SubPort 0 Geschrieben 22. Januar 2019 Autor Melden Teilen Geschrieben 22. Januar 2019 Mit den Grundlagen kämpfe ich noch. In unserer Company steht bald eine PS-Schulung an. Bis dato behelfe ich mich mit dem Internet, ein bisschen was schaffe ich alleine, aber dieses Script ist für mich eine Herausforderung. Ich habe jetzt den Befehl eingebaut und folgendes kam raus: Wie kann ich den Owner 'übersetzen'? FullName \\yourserver\yourshare Owner O:S-1-5-21-1116762646-104934148-3566329416-34711 PS. Wie schnell du das gelöst hast :-S... -Respekt- Mooooooment. Der Owner heißt tatsächlich -1-5-21... Jetzt muss ich mir das genauer anschauen. Danke Dukel, bist mein Held! Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. Januar 2019 Melden Teilen Geschrieben 22. Januar 2019 vor 51 Minuten schrieb Dukel: Get-Childitem kennt keinen Ordner. Du musst mit Where-Objct (bzw. ?) einschränken. Get-Childitem | ? { $_.PsIsContainer } Das ist - bei ansatzweise aktueller Powershell - so nicht ganz richtig. Seit Powershell v3.0 gibt es für Get-ChildItem die Parameter -File und -Directory. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 22. Januar 2019 Melden Teilen Geschrieben 22. Januar 2019 Stimmt. Dann am besten bei Zeiten die Powershell aktualisieren. Am besten auf die 5.1 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. Januar 2019 Melden Teilen Geschrieben 22. Januar 2019 vor 42 Minuten schrieb SubPort: Mit den Grundlagen kämpfe ich noch. In unserer Company steht bald eine PS-Schulung an. Wenn Du zwischendurch mal ein bissl Zeit hast, kannst Du Dich ein bissl "berieseln" lassen. Der kostenlose Videokurs in der Microsoft Virtual Academy - Getting Started with Powershell ist für Einsteiger sehr empfehlenswert. (wenigstens so lange er noch verfügbar ist) Und wenn Du dann in der Schulung sitzt, hast Du schon einen kleinen Vorsprung. Zitieren Link zu diesem Kommentar
SubPort 0 Geschrieben 22. Januar 2019 Autor Melden Teilen Geschrieben 22. Januar 2019 Hey BofH_666, danke dir für die Info. Schaue ich mir nachher gleich an. Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 22. Januar 2019 Melden Teilen Geschrieben 22. Januar 2019 Am 22.1.2019 um 09:12 schrieb SubPort: Wie kann ich den Owner 'übersetzen'? FullName \\yourserver\yourshare Owner O:S-1-5-21-1116762646-104934148-3566329416-34711 PS. Wie schnell du das gelöst hast :-S... -Respekt- Mooooooment. Der Owner heißt tatsächlich -1-5-21... Jetzt muss ich mir das genauer anschauen. Danke Dukel, bist mein Held! Naja, das ist eine SID. Die kannst per LDAP Query im AD nachschlagen... Get-ADObject wäre das Cmdlet dafür Und wenn die nicht aufgelöst werden kann, hat jemand den 33.711ten Security Principal gelöscht, der in Eurem AD angelegt wurde. Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 24. Januar 2019 Melden Teilen Geschrieben 24. Januar 2019 (bearbeitet) Alternativ kannst du auch die SID mit der Powershell auflösen: # User to SID $objAdNtAccount = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList ( $AdDomain, $SamAccountName ) $strAdObjectSID = $objAdNtAccount.Translate([Security.Principal.SecurityIdentifier]) # SID to User ( Quelle: https://blogs.msdn.microsoft.com/mpeder/2014/10/07/convert-sid-to-user-name-using-powershell ) $objSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-21-3496554487-1900509739-3140548133-500") $objUser = $objSID.Translate( [System.Security.Principal.NTAccount]) $objUser.Value Das Ergebnis ist ein String der in der Variable $strAdObjectSID gespeichert wird. Zweiteres in objUser bearbeitet 24. Januar 2019 von MurdocX Zitieren Link zu diesem Kommentar
SubPort 0 Geschrieben 24. Januar 2019 Autor Melden Teilen Geschrieben 24. Januar 2019 Vielen Dank an daabm und MurdocX. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.