Befehlsausgabe basierend auf Zeichenfolge erfassen

369
James1984

Ich habe dieses Skript gefunden, und ich versuche, es zu verwenden, um ein AD-Konto zu finden, indem die Mitgliedschaft von Gruppen wie folgt durchsucht wird:

ForEach ($Group in (Get-ADGroup -Filter * -searchbase "dc=acme,dc=local"))  {  $output = Get-ADGroupMember $Group | Select @},Name,SamAccountName } 

Ich habe keine Ahnung, wie ich diesen Code mit einer if-Anweisung versehen würde. Wenn es einen besseren Weg gibt, das Gleiche zu erreichen, geben Sie uns bitte Bescheid. Das Hauptziel besteht darin, AD-Gruppen nach einem Benutzernamen zu durchsuchen und den Gruppennamen zurückzugeben, in dem der angegebene Benutzer Mitglied ist.

Vielen Dank

0
Ihre Frage ist ziemlich vage; Es wäre besser, wenn Sie genau erklären könnten, was Sie wollen, wenn Sie es schaffen. Noch besser wäre es, einen Pseudocode zur Veranschaulichung Ihrer Logik zur Verfügung zu stellen - was möglicherweise zu einer eigenen Lösung des Problems führt. Die Pipeline in PowerShell ist ziemlich mächtig. Es ist jedoch nicht die ultimative Lösung für jedes mögliche PowerShell-Problem. Jeff Zeitlin vor 5 Jahren 0
Derzeit gibt das Skript den Gruppennamen und den SamAccountName der Benutzer aus. Ich möchte diese Ausgabe nach einem Kontonamen durchsuchen und nur den Gruppennamen ausgeben, wenn der angegebene Benutzer in dieser Gruppe vorhanden ist. James1984 vor 5 Jahren 0
Sie möchten also die Gruppen finden, in denen sich ein Benutzer befindet? Jeff Zeitlin vor 5 Jahren 0
Ja, aber ich muss jede mögliche Gruppe in allen Bereichen durchsuchen, um alle zu erhalten. James1984 vor 5 Jahren 0

1 Antwort auf die Frage

0
postanote

Es klingt, als wären Sie mit PowerShell und ADDS noch nicht vertraut. Es ist wichtig, dass Sie irgendwann damit verbringen, alle frei verfügbaren Schulungen und Videos online über…

Suchen Sie nach PowerShell für Anfänger

  • Microsoft Virtual Academy
  • TechNet Virtual Labs
  • Youtube
  • MS Channel9

… Um eine solide Basis zu erhalten. Obwohl etwas veraltet, aber dennoch empfehlenswert, sollten Sie eine Kopie von PowerShell in einem Monat des Mittagessens von Don Jones abholen und verwenden.

Es gibt viele bereits existierende Beispiele, sogar vollständig vorgefertigte Skripte, wie genau dies im gesamten Web geschieht. Die MS PowerShellGallery sollte Ihr Ausgangspunkt sein.

Get the group membership of a given AD group and return a user-specified list of attributes to a CSV file.  https://www.powershellgallery.com/packages/getADGroupMembershipWithProperties/1.1/DisplayScript 

Sie können die ADDS-Cmdlets auch direkt verwenden. Nein wenn Angabe erforderlich. Dies wird in der integrierten PowerShell-Hilfedatei über den dortigen Text und Beispiele in den Hilfedateien angezeigt. Es ist nur eine Frage der Filterung nach dem Namen

Verwenden Sie einfach das eingebaute Zeug.

Clear-Host $TargetUsername = Read-Host -Prompt 'Enter a username' "Getting groups for user $TargetUsername" Get-ADPrincipalGroupMembership -Identity $TargetUsername |  Select-Object -Property @},SamAccountName |  Format-Table -AutoSize 

Wenn Sie verschachtelte Gruppen erhalten möchten, ist mehr Code erforderlich. Das integrierte Cmdlet zeigt keine verschachtelten oder indirekten Gruppen an.

Das Don-Jones-Buch wurde aktualisiert. Der Titel, nach dem Sie jetzt suchen sollten, sollte *** Lernen Sie PowerShell-Skripting in einem Monat der Mittagessen *** sein und deckt das Material ab, das sich früher in *** befunden hat. Lernen Sie PowerShell in einem Monat der Mittagessen ***, *** Lernen PowerShell 3 in einem Monat mit Mittagessen *** und *** Lernen Sie PowerShell-Toolmaking in einem Monat mit Mittagessen *** sowie Updates für mindestens PowerShell 4 und möglicherweise PowerShell 5. Ich glaube nicht, dass PowerShell 6 davon betroffen ist. PowerShell Core schon. Jeff Zeitlin vor 5 Jahren 0
Nun, das passiert doch, aber seit ich vor einer langen Zeit meins bekam, wissen Sie. postanote vor 5 Jahren 0
War nicht als Kritik gedacht, nur zur Information ... :) Jeff Zeitlin vor 5 Jahren 0
8 ^} und wurde nicht so genommen. postanote vor 5 Jahren 0