Benutzer-Werkzeuge

Webseiten-Werkzeuge


powershell:ad:examples

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
powershell:ad:examples [2021/06/24 10:38] henningpowershell:ad:examples [2024/05/27 08:36] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 2: Zeile 2:
 ===== User, Gruppen und Computer ===== ===== User, Gruppen und Computer =====
 **User auslesen:**\\ **User auslesen:**\\
-alle nicht deaktiverten Domänen-User auslesen und nur den Namen anzeigen:\\ +alle nicht deaktiverten Domänen-User auslesen und nur den Namen anzeigen: 
-''get-aduser -ldapfilter "(&(&(objectCategory=user)(userAccountControl=512)))" | where-object -property enabled -eq true | fl name''\\+<code powershell>get-aduser -ldapfilter "(&(&(objectCategory=user)(userAccountControl=512)))" | where-object -property enabled -eq true | fl name</code>
 userAccountControl=512 heißt "NORMAL_ACCOUNT", siehe:[[https://support.microsoft.com/en-us/help/305144/how-to-use-useraccountcontrol-to-manipulate-user-account-properties]]\\ userAccountControl=512 heißt "NORMAL_ACCOUNT", siehe:[[https://support.microsoft.com/en-us/help/305144/how-to-use-useraccountcontrol-to-manipulate-user-account-properties]]\\
  
-**Gruppen auslesen:**\\ +**Gruppen auslesen:** 
-''Get-ADGroup -Filter "GroupScope -eq 'Global' -and GroupCategory -eq 'Security'"''\\+<code powershell>Get-ADGroup -Filter "GroupScope -eq 'Global' -and GroupCategory -eq 'Security'"</code>
  
 **verschachtelte AD-Gruppen-Mitgliedschaften (nested):**\\ **verschachtelte AD-Gruppen-Mitgliedschaften (nested):**\\
-sh. [[https://gallery.technet.microsoft.com/scriptcenter/Get-nested-group-15f725f2]]\\ +sh. [[https://gallery.technet.microsoft.com/scriptcenter/Get-nested-group-15f725f2]] 
-''Get-ADNestedGroupMembers "GroupName"''+<code powershell>Get-ADNestedGroupMembers "GroupName"</code>
  
-**Computer auslesen:**\\ +**Computer auslesen:** 
-''Get-ADComputer -filter 'name -like "*"' -Properties * | select name,OperatingSystem,IPv4Address''\\+<code powershell>Get-ADComputer -filter 'name -like "*"' -Properties * | select name,OperatingSystem,IPv4Address''</code>
  
-**Username zu SID**:\\ +**Username zu SID**: 
-''(New-Object System.Security.Principal.NTAccount($(read-host -prompt "Username"))).Translate([System.Security.Principal.SecurityIdentifier]).value''\\+<code powershell>(New-Object System.Security.Principal.NTAccount($(read-host -prompt "Username"))).Translate([System.Security.Principal.SecurityIdentifier]).value</code> 
 + 
 + 
 +**Benutzer remote von Arbeitsplatz abmelden**:\\ 
 +Step 1: Wer ist an dem System angemeldet? 
 +<code powershell>Invoke-Command -ComputerName REMOTECOMPUTER-X -ScriptBlock {quser}</code> 
 +Die Ausgabe dazu sieht wie folgt aus: 
 +<code> BENUTZERNAME          SITZUNGSNAME       ID  STATUS  LEERLAUF   ANMELDEZEIT 
 + USER_TO_LOG_OFF                             Getr.        36   06.07.2022 07:37 
 + 2ND_USER                 rdp-tcp#       3   Aktiv           06.07.2022 13:49</code> 
 +Step 2: Benutzer über Session-ID abmelden: 
 +<code powershell>Invoke-Command -ComputerName vm-133 -ScriptBlock {logoff 1}</code> 
 + 
 +Das Ganze halbwegs automatisiert als Skript: 
 +<file powershell RemoteLogOff-User.ps1> 
 +$User=Read-Host "SamAccountName eingeben" 
 + 
 + 
 +# Anmeldelogs nach dem System des Benutzers durchsuchen 
 +$Directory="\\vbw-bochum.local\dfs\Logondaten\benutzer" 
 +$Files=Get-ChildItem $Directory -File 
 + 
 +$UserSystems=@() 
 +foreach ($File in $Files) 
 +    { 
 +    foreach($line in Get-Content ($File.FullName)) 
 +        { 
 +        if($line -like "Rechner*"
 +            { 
 +            $item=New-Object -type psobject | Add-Member -MemberType NoteProperty -Name "SamAccountName" -Value $File.name.TrimEnd(".txt") -PassThru | add-member -MemberType NoteProperty -Name "System" -Value $line.TrimStart("Rechner: ") -PassThru | Add-Member -MemberType NoteProperty -Name "Erfassungsdatum" -Value $File.lastwritetime -PassThru  
 +            } 
 +        } 
 +     
 +    $UserSystems += $item 
 +    } 
 + 
 +$system=(($UserSystems | Where-Object samaccountname -like $User).system).trimend(" ") 
 + 
 +# Auf dem gefundenen System nach Sessions mit dem Anmeldenamen suchen 
 +Invoke-Command -ComputerName $system -ScriptBlock ` 
 +    { 
 +    $sessions=quser | Where-Object {$_ -match "$($user:using)"
 +    $sessions 
 +    $SessionIDs=@() 
 +    foreach ($line in $sessions) 
 +        { 
 +        if ($line -notlike "*Benutzername*" -and $line -notlike "*Aktiv*"
 +            { 
 +            #replace "\s{2,}",";" => Ersetze alle mehr als 2x aufeinanderfolgenden Leerzeichen durch ein ; 
 +            $SessionIDs+=($line -replace "\s{2,}",";").split(";")[2] 
 +            } 
 +        } 
 +     
 +    foreach ($SessionID in $SessionIDs) 
 +        { 
 +        logoff $SessionID 
 +        } 
 +    } 
 +</file> 
 + 
 + 
 +**Horizon-Anmeldedienst starten**:\\ 
 +<code powershell>Invoke-Command -ComputerName REMOTECOMPUTER-X -ScriptBlock {Get-Service vmlm | start-service}</code>
  
 ===== Arbeiten am AD ===== ===== Arbeiten am AD =====
-**Anbinden einer Domäne als PSDrive**\\ +**Anbinden einer Domäne als PSDrive** 
-''New-PSDrive -Name AD2 -PSProvider ActiveDirectory -Server $FQDN_DC_ServerName -root "//RootDSE/"''+<code powershell>New-PSDrive -Name AD2 -PSProvider ActiveDirectory -Server $FQDN_DC_ServerName -root "//RootDSE/"</code> 
 + 
 +**DNS abfragen**: 
 +<code powershell>Get-DnsServerZone -ComputerName DNSSERVERNAME</code> 
 + 
 +**Alle DomainController abfragen** 
 +<code powershell>(Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ }</code> 
 + 
 +**Subnets in Sites and Services** 
 +<code powershell>Get-ADReplicationSubnet -filter * -Properties * | Select Name, Site, Location, Description</code> 
 + 
 +**Exchange-Version** 
 +<code powershell>Get-ADObject "CN=ms-Exch-Schema-Version-Pt,$((Get-ADRootDSE).schemaNamingContext)" -Property Rangeupper</code> 
 +==== Bilder konvertieren ==== 
 +Eigentlich ist das kein Powershell-Problem. Bilder können über eine beliebige Shell sehr gut mit Hilfe von ImageMagick konvertiert werden.\\
  
-**DNS abfragen**:\\ +**Alle *.HEIC Dateien im aktuellen Verzeichnis nach ''.PNG'' konvertieren:** 
-''Get-DnsServerZone -ComputerName DOMAINCONTROLLERNAME''\\+<code powershell>magick mogrify -monitor -format PNG *.heic</code>
  
-**Alle DomainController abfragen**\\ +**Wahlweise nach ''.JPG'':** 
-''(Get-ADForest).Domains | %{ Get-ADDomainController -Filter -Server $_ }''\\+<code powershell>magick mogrify -monitor -format JPG *.heic</code>
  
-**Subnets in Sites and Services**\\ +**Eine einzelne Datei konvertieren:** 
-''Get-ADReplicationSubnet -filter * -Properties * | Select Name, Site, Location, Description''+<code powershell>magick convert IMG_1874.HEIC IMG_1874.jpg</code>
  
-**Exchange-Version**\\ 
-''Get-ADObject "CN=ms-Exch-Schema-Version-Pt,$((Get-ADRootDSE).schemaNamingContext)" -Property Rangeupper'' 
powershell/ad/examples.1624523880.txt.gz · Zuletzt geändert: 2024/05/27 08:34 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki