Gibt es eine einfache Möglichkeit, Powershell mit allen lokalen Windows-Gruppen zu zeigen, die auf einer Maschine und den Benutzer aktiv sind, die ein Teil dieser Gruppen sind? Ein zweiter Teil dieser Frage wäre, wenn es erweitert werden könnte, um mehr als eine Maschine gleichzeitig zu betrachten.Benutzer und lokale Gruppen Melden Sie sich mit Powershell an?
Antwort
In der Tat Sie mit dem ADSI Typ Verknüpfung kann und der WinNT Moniker. Hier ist ein Beispiel Gruppen und Mitglieder von Ihrer eigenen Maschine zur Liste:
$server="."
$computer = [ADSI]"WinNT://$server,computer"
$computer.psbase.children | where { $_.psbase.schemaClassName -eq 'group' } | foreach {
write-host $_.name
write-host "------"
$group =[ADSI]$_.psbase.Path
$group.psbase.Invoke("Members") | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
write-host
}
Powershell hat keine inhärente Unterstützung für eine solche Funktion. Es ist jedoch einfach, den "net localgroup" -Befehl mit einigen Powershell-Funktionen zu umschließen und somit in der Pipeline zu aktivieren.
Lokale Interessen Gruppen
function Get-LocalGroups() {
net localgroup | ?{ $_ -match "^\*.*" } | %{ $_.SubString(1) };
}
Lokale Interessen Gruppenmitglieder
function Get-LocalGroupMembers() {
param ([string]$groupName = $(throw "Need a name"))
$lines = net localgroup $groupName
$found = $false
for ($i = 0; $i -lt $lines.Length; $i++) {
if ($found) {
if (-not $lines[$i].StartsWith("The command completed")) {
$lines[$i]
}
} elseif ($lines[$i] -match "^----") {
$found = $true;
}
}
}
Die Schleife sollte einmal brechen trifft die Zeile "Der Befehl ist abgeschlossen", andernfalls wird eine leere Zeichenfolge als letztes Element des Arrays zurückgegeben, da die letzte Zeile in der Ausgabe leer ist. – bradvido
Im Folgenden ist eine verbesserte Version von Shay Levys Skript, das für lokale Gruppen mit „verwaisten“ Konten funktioniert die SIDs nicht aufgelöst werden kann.
$server = "$env:COMPUTERNAME"
$computer = [ADSI]"WinNT://$server,computer"
$computer.psbase.children | where { $_.psbase.schemaClassName -eq 'group' } | foreach {
write-host $_.name
write-host "------"
$group =[ADSI]$_.psbase.Path
$group.psbase.Invoke("Members") | foreach {$_."GetType".Invoke().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
write-host
}
Jay Levy Antwort verwandelte sich in eine Funktion :)
Function Get-LocalGroupMembers
{
Param(
[string]
$server = "."
)
Try
{
$computer = [ADSI]"WinNT://$($Server),computer"
$computer.psbase.children |
where {
$_.psbase.schemaClassName -eq 'group'
} |
ForEach {
$GroupName = $_.Name.ToString()
$group =[ADSI]$_.psbase.Path
$group.psbase.Invoke("Members") |
foreach {
$memberName = $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null) -replace "WinNT:", ""
$props = @{
"LocalGroup" = $GroupName
"MemberName" = $memberName
}
$obj = New-Object -TypeName psobject -Property $props
Write-Output $obj
} # foreach members
} # foreach group
}
Catch
{
Throw
}
}
Um die lokalen Gruppenmitglieder
Get-LocalGroupMembers
Um die lokalen Gruppenmitglieder für eine andere Maschine
Get-LocalGroupMembers -Server $Computer
zu erhalten zu erhalten
Wie bearbeite ich diese Funktion, um die Ergebnisse in eine Text- oder CSV-Datei auszugeben? – salvationishere
- 1. Powershell - Liste lokale Benutzer und Gruppen ihre
- 2. Java - Melden Sie sich als Benutzer oder Administrator an? Inheritance
- 3. Melden Sie sich mit C#
- 4. Melden Sie sich bei Azure B2C an
- 5. Google Maps URL melden Sie sich als einen bestimmten Benutzer
- 6. So melden Sie sich mit einfacher Powershell-Authentifizierung bei der Website an:
- 7. Melden Sie sich bei der https-Website an und laden Sie die Dateien mit der Powershell herunter.
- 8. So melden Sie sich an der JBoss-Konsole an
- 9. So melden Sie sich UTF-8 mit EnterpriseLibrary.Logging an
- 10. So melden Sie sich bei Amazon SellerCentral mit Goutte an
- 11. Melden Sie sich mit Azure Web Apps an. Auth
- 12. Melden Sie sich mit HtmlUnit beim Google-Konto an.
- 13. So melden Sie sich mit Python auf dieser Website an
- 14. Melden Sie sich mit web api odoo 8 an
- 15. Melden Sie sich mit PHP in einer Seite an.
- 16. Melden Sie sich mit Standardbrowser in einer Webseite an C#
- 17. Powershell ScheduledTask melden Fehler
- 18. So melden Sie sich mit Robot Framework beim root-Benutzer an
- 19. Melden Sie sich mit PHP an und erhalten Sie Text von Seite
- 20. Melden Sie sich mit HtmlUnit bei LinkedIn an und navigieren Sie zu Connections. Webseite
- 21. Tippen Sie auf Weiter und melden Sie sich an, um nach Downloads zu suchen. [Sandbox]
- 22. So melden Sie sich beim FIX-Protokoll an?
- 23. Powershell starten IE in private und melden Sie sich auf Seite
- 24. Flask-Sicherheit Flask-Login | Melden Sie sich als Benutzer vor der ersten Anfrage an
- 25. Powershell - verschachtelte rekursive Gruppen
- 26. Anmeldung mit Devise - Melden Sie sich beim Konto an, wenn Sie auf den Link klicken
- 27. Powershell: Übergeben Sie lokale Variable
- 28. Melden Sie sich an und verzögern Sie die zweite Aktivität, bis die Ergebnisse veröffentlicht werden
- 29. Melden Sie sich bei Google Spreadshet API mit ClientLogin und PHP/cURL an
- 30. Melden Sie sich in einer Rails-App mit Devise und token_authentificate an: "401 unauthorized"
Ich erhalte einen Fehler mit der Anweisung $ group = [ADSI] $ _. Pfad – msvcyc
fügen Sie psbase vor Pfad hinzu (d. H. [ADSI] $ _. Psbase.Path) –
omg danke ich hätte dies nie selbst gefunden! Gibt es eine Möglichkeit zu wissen, ob die Mitglieder der lokalen Gruppe Benutzer oder Gruppe sind? (Ich möchte die Mitglieder der Administratoren localgroup aufzulisten und wenn ein Mitglied eine domaingroup Liste seiner Mitglieder) –