Mitglieder aus einer AD Gruppe in eine andere AG Gruppe kopieren

Du möchtest alle Mitglieder aus einer AD-Gruppe in eine andere AD-Gruppe schmeißen? Dann füge das Skript einfach in der PowerShell ein.

Dies ist hilfreich wenn man im nachhinein z.B. einen Mailverteiler Gruppe erstellt hast. Hierfür musst du allerdings Admin Berechtigungen in der AD haben.

Quell_Gruppe: Die AD-Gruppe aus der die Mitglieder kopiert werden sollen

Ziel_Gruppe: Die AD-Gruppe in die die Mitglieder kopiert werden

$Quell_Gruppe = "Gruppe1"
$Ziel_Gruppe = "Gruppe2"



$Gruppe = Get-ADGroupMember $Quell_Gruppe | Select sAMAccountName
$Gruppe | ForEach { Add-ADGroupMember $Ziel_Gruppe -Members $_.sAMAccountName}

Anzahl der Bitlocker Keys aus der AD auslesen

Du möchtest die Anzahl der einzelnen Bitlocker Keys eines Clients aus der Ad auslesen. Dafür brauchst du einfach dieses Skript. Es geht einmal über die AD und gibt dir zum Schluss die Anzahl aus.

write-host "get-bitlockercomputer: Start"
$Bitlockerclients = @{}



$RootNC = ([ADSI]"LDAP://RootDSE").rootDomainNamingContext
$objSearcher = [adsisearcher]([ADSI]"GC://$RootNC")
$objSearcher.PageSize = 1000   
$objSearcher.filter = "(objectclass=msFVE-RecoveryInformation)"
$objSearcher.SearchScope = "subtree"
$objSearcher.PropertiesToLoad.Clear() | Out-Null   

write-host "get-bitlockercomputer: Search for Recovery Information"
[long]$volumes=0
$objSearcher.findall() | % {
	$volumes++
  	$computer = [ADSI](([adsi]($_.path)).parent) 
	$computerdn = $computer.distinguishedname[0]
	Write-Progress -Activity "Adding Computer $computerdn" -status $volumes
	
	If ($Bitlockerclients.item($computerdn)) {
		$Bitlockerclients.item($computerdn)++
	}
	Else {
		$Bitlockerclients.item($computerdn)=[int]1
	}
}
[long]$totalcomputer = $Bitlockerclients.count
# Find all Computers
write-host " Search for all Computers to generate list"
$objSearcher.filter = "(objectclass=Computer)"
$objSearcher.PropertiesToLoad.Add(“Name”) | Out-Null
$objSearcher.PropertiesToLoad.Add(“distinguishedname”) | Out-Null
$objSearcher.PropertiesToLoad.Add(“dNSHostName”) | Out-Null

[long]$matchcount = 0 
$objSearcher.findall() | % {
	Write-Progress -Activity ("Matching Computer " +$_.properties.name) -status $matchcount -percentcomplete ($matchcount/$totalcomputer*100)
	$result = "" | select computername,dNSHostName,distinguishedname,bitlockervolumes
	if ($_.properties.name) {$result.computername = $_.properties.name[0]}
	if ($_.properties.dnshostname) { $result.dNSHostName = $_.properties.dnshostname[0]}
	$result.distinguishedname = $_.properties.distinguishedname[0]
  	If ($Bitlockerclients.item($_.properties.distinguishedname[0])) {
		$result.bitlockervolumes = $Bitlockerclients.item($_.properties.distinguishedname[0])
		$matchcount++
	}
	else {
		$result.bitlockervolumes = $null
	}
	$result    
}
write-host "get-bitlockercomputer: End"

Quelle:

Get-BitlockerReport (msxfaq.de)

Windows 10 Domain User automatisch anmelden

Du möchtest das ein Domain User an einem Client automatisch angemeldet wird. Dies ist leider nicht mehr so einfach über die Windows Boardmittel möglich und muss mittlerweile über die Registry gesetzt werden.

Registry öffnen

[Windows-Taste] + [r] regedit – eingeben und bestätigen

Folgendem Schlüssel wechseln

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Parameter anpassen

DefaultUserName  Username Bsp.: it-hense.de\Autologon
DefaultPassword  Passwort Bsp.: Passwort123!
DefaultDomainName Domäne Bsp.: it-hense.de
AutoAdminLogon  auf Wert 1 setzen

Fertig

Nun sollte nach einem Systemreboot der Angelegte Benutzer automatisch anmelden.


PowerShell Befehle

Auslesen ob Computer in einer Domäne ist

Mit diesem Befehl gibt dir die Konsole den Domänen Namen zurück

Get-WmiObject -Class Win32_ComputerSystem | Select-Object Domain

Mit diesem gibt dir die Konsole nur ein true für ja der Computer ist in einer Domäne und false für nein ich bin in einer Workgroup

(Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain

Auslesen wer auf einen Ordner Berechtigt ist.

(Get-Acl C:\Windows).Access

User aus einer AD Gruppe auslesen

Get-ADGroupMember -Identity AD-Gruppe | select name

Domain Join mittels PowerShell

In diesem Beitrag zeige ich dir wie du einen Windows Client in eine Windows Domaine per Skript aufnimmst.

Im Beispiel ist die Domaine die „hense.local“ uns das Passwort liegt verschlüsselt unter „C:\temp“.
In einem anderen Beitrag habe ich schonmal gezeigt wie man ein Passwort mittels PowerShell verschlüsseln kann. Dies wird hier benötigt.

Schritte

  • Passwort Verschlüsseln
  • Variablen anpassen
  • Skript als Admin ausführen
### Erstellt am 22.05.2021 - Philipp Hense - it-hense.de ###

# Variablen

$DomainName = "hense.local"
$PasswortSpeicherort = C:\temp


## Ab hier nichts mehr ändern ##

#Credentials aufbauen
$username = "Administrator"
$key = (3,4,2,3,6,2,1,1,2,3,2,4,3,1,4,2)
$password = get-content ("$PasswortSpeicherort\passwort.txt") | convertto-securestring -key $key
$credentials = New-Object System.Management.Automation.PSCredential (“$username”, $password)

#Domain Join
Add-Computer -DomainName $DomainName -Restart -Credential $credentials

PowerShell Passwort verschlüsseln

In diesem Beitrag zeige ich dir wie du mittels PowerShell ein Passwort verschlüsseln kannst. Dies wird oftmals gebraucht um ein Passwort in ein Skript einzubauen ohne das es in Klartext eingefügt wird. Wenn du dieses Skript benötigst lade dir den Sourcecode herunter.

Skripte

### Erstellt am 23.03.2021 - Philipp Hense ###

Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()

$Speicherort                     = New-Object system.Windows.Forms.Form
$Speicherort.ClientSize          = New-Object System.Drawing.Point(725,232)
$Speicherort.text                = "Speicherort"
$Speicherort.TopMost             = $false
$Speicherort.icon                = ".\icon.ico"

$Eingabe                         = New-Object system.Windows.Forms.TextBox
$Eingabe.multiline               = $false
$Eingabe.text                    = "z.B. C:\temp"
$Eingabe.width                   = 673
$Eingabe.height                  = 20
$Eingabe.Anchor                  = 'top,right,bottom,left'
$Eingabe.location                = New-Object System.Drawing.Point(30,78)
$Eingabe.Font                    = New-Object System.Drawing.Font('Courier New',12,[System.Drawing.FontStyle]([System.Drawing.FontStyle]::Italic))
$Eingabe.ForeColor               = [System.Drawing.ColorTranslator]::FromHtml("#0017ff")
$Eingabe.BackColor               = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")

$Label                           = New-Object system.Windows.Forms.Label
$Label.text                      = "Bitte gebe hier den Pfad an in der das Passwort verschluesselt abgespeichert werden soll."
$Label.AutoSize                  = $true
$Label.width                     = 350
$Label.height                    = 10
$Label.Anchor                    = 'top,right,left'
$Label.location                  = New-Object System.Drawing.Point(6,15)
$Label.Font                      = New-Object System.Drawing.Font('MV Boli',12)

$abbrechen                       = New-Object system.Windows.Forms.Button
$abbrechen.text                  = "Abbrechen"
$abbrechen.width                 = 210
$abbrechen.height                = 40
$abbrechen.location              = New-Object System.Drawing.Point(116,159)
$abbrechen.Font                  = New-Object System.Drawing.Font('Tw Cen MT',12,[System.Drawing.FontStyle]([System.Drawing.FontStyle]::Bold))
$abbrechen.ForeColor             = [System.Drawing.ColorTranslator]::FromHtml("#ff0000")
$abbrechen.BackColor             = [System.Drawing.ColorTranslator]::FromHtml("#d1d1d1")
$abbrechen.Add_Click({$Speicherort.Close()})


$speichern                       = New-Object system.Windows.Forms.Button
$speichern.text                  = "Speichern"
$speichern.width                 = 210
$speichern.height                = 41
$speichern.location              = New-Object System.Drawing.Point(377,158)
$speichern.Font                  = New-Object System.Drawing.Font('Tw Cen MT',12,[System.Drawing.FontStyle]([System.Drawing.FontStyle]::Bold))
$speichern.ForeColor             = [System.Drawing.ColorTranslator]::FromHtml("#03770e")
$speichern.BackColor             = [System.Drawing.ColorTranslator]::FromHtml("#d1d1d1")

$speichern.Add_Click({$Speicherort.Close(); .\passwort-hash.lnk -Eingabe $Eingabe.Text})

$copyright                       = New-Object system.Windows.Forms.Label
$copyright.text                  = " 2021 Philipp Hense"
$copyright.AutoSize              = $true
$copyright.width                 = 25
$copyright.height                = 10
$copyright.location              = New-Object System.Drawing.Point(10,218)
$copyright.Font                  = New-Object System.Drawing.Font('Microsoft Sans Serif',7)
$copyright.ForeColor             = [System.Drawing.ColorTranslator]::FromHtml("#acacac")

$Speicherort.controls.AddRange(@($Eingabe,$Label,$abbrechen,$speichern,$copyright))



[void]$Speicherort.ShowDialog()
### Erstellt am 23.03.2021 - Philipp Hense ###

param (
 [string] $Eingabe = $Eingabe
)

$File = "$Eingabe"
$File_a = ("$File").TrimStart("System.Windows.Forms.TextBox, Text: ")
$File_neu = $File_a + "\passwort.txt"
$password = Read-Host Bitte Passwort eingeben -AsSecureString
$key = (3,4,2,3,6,2,1,1,2,3,2,4,3,1,4,2)
$password | ConvertFrom-SecureString -key $key| Set-Content ("$file_neu")

Links

Philipp Hense / Powershell-Passwort-verschlüsseln · GitLab


Bitlocker Key in Active Directory schreiben

In diesem Beitrag zeige ich dir wie du einen schon vorhandenen Bitlocker Key in die Windows AD schreiben kannst.

Dies wird oftmals dann gebraucht falls die Gruppenrichtlinie nicht funktioniert hat und der Key nicht automatisch geschrieben wurde, oder das Computerkonto aus versehen gelöscht wurde.

PowerShell Skript

### Erstellt am 07.04.2021 - Philipp Hense ###

$key = manage-bde -protectors -get c: 
$key = $key.trim() -join ";"
$keymatches = ($key | select-String -pattern "ID: {(?<ID>[0-9ABCDEF-]+)};Kennwort:;(?<K>[0-9-]*)" -AllMatches).Matches
 
$key_id = $keymatches[0].Groups.Item(1).Value
$keymatches[0].Groups.Item(2).Value



manage-bde -protectors -adbackup c: -id "{$key_id}"

Führe das Skript als Admin aus!

Links

Philipp Hense / Bitlocker Key in AD schreiben · GitLab


GPO- Edge Chromium Startseite und Suchmaschine festlegen

In diesem Beitrag wird beschrieben wie man mittels Gruppenrichtlinien eine Startseite / Suchmaschine im Microsoft Edge Chromium festlegt. Ebenfalls kann man auswählen was beim Start passieren soll.

Lade dir zunächst die GPO Vorlage herunter.
Entpacke das ZIP-File und lege *.admx Datei unter „C:\Windows\PolicyDefinitions“ ab. Das Sprachpaket *.adml muss unter dem selben Pfad im Ordner de-DE abgelegt werden.

Öffne nun die Gruppenrichtlinien und erstelle eine Neue GPO.

Nun solltest du unter „Benutzerkonfiguration – Administrative Vorlagen – Microsoft Edge“ finden.

Hier habe ich folgende Punkte aktiviert bzw. eingestellt.

„Eindruck beim ersten Ausführen“ und Begrüßungsbildschirm ausblendenAktiviert
Favoritenleiste aktivierenAktiviert

Im Ordner „Standard Suchanbieter“.

Standardsuchanbieter aktivierenAktiviert
StandardsuchanbieternameAktiviert
StandardsuchanbieternameGoogle
Standard-Suchanbieter-URL für Vorschläge{google:baseURL}complete/search?output=chrome&q={searchTerms}
Such-URL für den Standardsuchanbieter{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:searchClient}{google:sourceId}ie={inputEncoding}

Unter „Start, Startseite und neue Tabseite“

Aktion, die beim Start ausgeführt werden sollListe mit URLs öffnen
Homepage-URL konfigurierenwww.goolge.de
Schaltfläche „Startseite“ auf Symbolleiste anzeigenAktiviert
URL für die neue Tabseite konfigurierenhttps://google.de
Websites, die beim Start des Browsers geöffnet werden sollenhttps://google.de

Beim Nächsten Anmelden wird die GPO übernommen.
Nun sollte bei Öffnen des MS Edge google.de geöffnet werden und der Suchanbieter Google angegeben sein.