Skip to content

Daniels Tagesmeldungen

Kleine IT-Episoden, der Diabetes & das wahre Leben

  • Startseite
  • About me…
    • Lebenslauf
    • Weiterbildung
  • Diabetes melitus
    • Diabetes melitus – Definition/Typen
    • Diabetes melitus – Podcasts
    • Diabetes Typ-2 – Erläuterung
    • Medikament – Forxiga (Dapagliflozin)
    • Medikament – Eylea (Aflibercept)
    • Medikament – Lucentis (Ranibizumab )
    • Medikament – Metformin
  • Disclaimer
  • Toggle search form

Kategorie: Powershell

Powershell: Mastodon-Trööt generieren

Posted on 29. Dezember 202328. Dezember 2023 By Daniel Lensing Keine Kommentare zu Powershell: Mastodon-Trööt generieren

Die API von Mastodon lässt sich einfach per Powershell ansprechend. Darüber können sehr einfach Nachrichten versandt werden. Anbei ein Beispiel-Skript:

##### Manual to Create Applikation / Anleitung zur Applikationserstellung #####
# EN: Generate mastodon application for API access
# DE: Mastodon-Anwendung für API-Zugang generieren

# EN: Preferences - Development - New Application
# DE: Einstellungen - Entwicklung - Neue Anwendung

# EN: Set Application name - Deselect read & follow - Select write:statuses - Submit
# DE: SApplikationsmane setzen - read & follow abwählen - write:statuses auswählen - Speichern

# EN: Open the saved application and copy the API key. Paste this into the script.
# DE:  Die gespeicherte Applikation öffnen und den API-Key kopieren. Diesen in das Skript einfügen.
###############################################################################


### Nachrichten-Text
$message = 'Das ist ein Test-Trööt!'

#### Troot-Status
# Parameters: public - unlisted - private
$status ="public"


########################################
### Static entries / Statische Einträge:
########################################
$Hostname = 'domain.social'
$token = 'TokenID'

###################################
### Do not modify / Nicht verändern
###################################
$url = "https://$hostname/api/v1/statuses"

$headers = @{
    "Authorization" = "Bearer $($token)"
}
$body = @{
    status  = $message
    visibility = $status
}
Invoke-WebRequest -Uri $url -Method Post -Headers $headers -Body $body

Im Skript muss der Hostname sowie die TokenID ausgetauscht werden. Entsprechend kann der Test-Trööt versendet werden. Dadurch kann zum Beispiel eine Automatisierung generiert werden.

Mastodon, Powershell, Windows 10, Windows 11, Windows Server 2019, Windows Server 2022

Powershell: Password-Reset mit Sonderzeichen

Posted on 23. Oktober 202323. November 2023 By Daniel Lensing Keine Kommentare zu Powershell: Password-Reset mit Sonderzeichen
Das Wort „PASSWORD“ mit Scrabble-Steine auf rotem Hintergrund gelegt
Photo by Miguel Á. Padriñán Alba – https://www.instagram.com/padrinan/

In den letzten Jahren haben sich die Regularien für Passwörter verändert. Von der Länge bis zur Komplexität gab es immer wieder Anpassung bei Anforderungen.

Bei der Nutzung von Sonderzeichen in Passwörtern kommt es gerne auch mal zu Problemen unter Powershell. So wird eine Pipe (|), ein Dollarzeichen ($) oder ein Anführungszeichen („) entsprechend als Programmcode interpretiert und es kommt zu Fehlermeldungen. Es kann auch dadurch der Umstand entstehen, dass ein „anderes Password“ gesetzt wird als definiert.

Dieses kann man mit dem folgenden Code-Schnipsel umgehen:

$password = @'
P!UAQ1I|FBZ-4o6N1?p8PDD"?"ce_s6A
'@
$securepassword = ConvertTo-SecureString $password -AsPlainText -Force
$user = "MMustermann"
Set-ADAccountPassword -Identity $user -NewPassword $securepassword –Reset
Set-ADUser -Identity $user -ChangePasswordAtLogon $true -CannotChangePassword $false -PasswordNeverExpires $false enabled $true
Unlock-ADAccount $user

Beim Aufruf der Variable $password wird nur die mittlere Zeile genutzt. Nach dem Setzen des Kennworts habe ich mir angewöhnt die weiteren Befehle mit zu setzen, da es dann weniger Komplikationen in der Nutzung des frisch gesetzten Kennworts gibt.

Client, Powershell, Windows 10, Windows 11, Windows Server 2016, Windows Server 2019, Windows Server 2022

Powershell: Gruppenmitglieder anhand Datei hinzufügen

Posted on 1. März 202228. Februar 2022 By Daniel Lensing Keine Kommentare zu Powershell: Gruppenmitglieder anhand Datei hinzufügen

Zum Importieren von Usern kann zum Beispiel eine csv-Datei genutzt werden. In diesem Skript ist das Format, dass in der ersten Spalte die der Gruppenname definiert wird. In den nachfolgenden Spalten können die zukünftigen Mitglieder definiert werden. Als Trennzeichen wird das Semikolon genutzt. Überschriften sind nicht erforderlich.

# Example ImportFile
# group_test;user_test1;user_test2;user_test8;
# group_Data;file_data2;file_data4;file_data5;


$Importdatei = "E:\GroupManagement\ImportFile.csv"
$Logfile ="E:\Groupmanagement\ImportLog.txt"
$Delimiter = ";"

Import-Module activedirectory

$members = Get-content $importdatei

for ($z=0; $z -le ($members.Length)-1; $z++ ){

$listobject = $members[$z].Split($Delimiter)

for ($i=1; $i -le ($listobject.Count)-1; $i++ ){

If ($listobject[$i]) {

Try{

Add-ADGroupMember -Identity $listobject[0] -members $listobject[$i]

Add-Content $logfile -value ('OK: '+($listobject[$i])+' in '+($listobject[0]))

}

Catch {

Add-Content $logfile -value ('ERROR: '+($listobject[$i])+' in '+($listobject[0]))

}
}
}
}

Im Log-File werden die Gruppen mit jeder einzelnen Transaktion gespeichert.

Powershell

Powershell: Kopieren von AzureAD-Gruppe des Typs Sicherheit

Posted on 7. Januar 20226. Januar 2022 By Daniel Lensing Keine Kommentare zu Powershell: Kopieren von AzureAD-Gruppe des Typs Sicherheit

Im Rahmen einer größeren Migration mussten Gruppen in der AzureAD kopiert werden, um diese neu zu berechtigen.

Mit dem folgenden Skript werden bei Gruppen, bei denen die Mitgliedschaften zugewiesen werden, die Besitzer (Owner) sowie die Mitglieder (Member) übernommen. Bei Gruppen mit dynamischer Mitglieder-Zuordnung wird das entsprechende Regelwerk übernommen und aktiviert.

#Variablen-Definition
$SourceGroup ="Gruppe_1A"
$DestinationGroup ="Gruppe_2A"

### Skript-Start
#Verbindungsaufbau zum Azure AD
Connect-AzureAD

#Ermittlung der Standard-Parameter der Source-Gruppe
$SourceObjectStatic = Get-AzureADGroup -Filter "DisplayName eq '$SourceGroup'"
$SourceObjectDynamic = Get-AzureADMSGroup -Filter "DisplayName eq '$SourceGroup'"

#Abfrage nach Gruppentyp "Dynamisch"
if ($SourceObjectDynamic.GroupTypes -eq "DynamicMembership") {
### Gruppentyp "Zugewiesen"

#Erstellung der neuen AzureAD-Gruppe
New-AzureADMSGroup -MembershipRule $SourceObjectDynamic.MembershipRule -DisplayName $DestinationGroup -SecurityEnabled $SourceObjectStatic.SecurityEnabled -MailEnabled $SourceObjectStatic.MailEnabled -MailNickname $SourceObjectStatic.MailNickName -MembershipRuleProcessingState "On" -GroupTypes @("DynamicMembership")

}

else {
### Gruppentyp "Zugewiesen"

#Erstellung der neuen AzureAD-Gruppe
New-AzureADGroup -DisplayName $DestinationGroup -MailEnabled $SourceObjectStatic.MailEnabled -SecurityEnabled $SourceObjectStatic.SecurityEnabled -MailNickName $SourceObjectStatic.MailNickName -Description $SourceObjectStatic.Description

#Ermittlung der Standard-Parameter der Destination-Gruppe
$DestinationObject = Get-AzureADGroup -Filter "DisplayName eq '$DestinationGroup'"

#Ermittlung der Mitglieder
$SourceMembers = Get-azureadgroupmember -Objectid $SourceObjectStatic.ObjectId -all $true

#Setzen der Mitglieder in Ziel-Gruppe
Foreach ($Destinationmember in $Sourcemembers){
Add-AzureADGroupMember -ObjectId $DestinationObject.ObjectId -RefObjectId $destinationmember.ObjectId
}

#Ermittlung der Besitzer
$SourceOwners = Get-azureadgroupOwner -Objectid $SourceObjectStatic.ObjectId -all $true

#Setzen der Mitglieder in Ziel-Gruppe
Foreach ($DestinationOwner in $SourceOwners){
Add-AzureADGroupOwner -ObjectId $DestinationObject.ObjectId -RefObjectId $DestinationOwner.ObjectId
}


}
Microsoft Azure, Powershell

Powershell: Owner von AD-Objekt auslesen

Posted on 2. November 20211. November 2021 By Daniel Lensing Keine Kommentare zu Powershell: Owner von AD-Objekt auslesen

Immer mal wieder wundert man sich über Objekte in der AD. Manchmal hilft es dann auf schnellen Weg den Ersteller zu ermitteln. Dieses ist natürlich über den Reiter „Sicherheit“/“Security“ und „Erweitert“/“Advanced“ in Erfahrung zu bringen. Ich suchte allerdings einen Weg, der mich schneller ans Ziel bringt.

Dabei ist diese folgende Code-Schnipsel entstanden:

#Definiton der zu nutzenden Assembly
Add-Type -AssemblyName Microsoft.VisualBasic

#Inputbox zur Abfrage des Objectnamens
#Computernamen müssen mit einem zusätzlichen $-Zeichen versehen werden
$Query = [Microsoft.VisualBasic.Interaction]::InputBox('Enter a object name', 'OwnerSearch', "$env:UserName")

#Suche nach dem Object
$object = [ADSI](([ADSISearcher]"(SamAccountName=$query)").FindOne().Path)

#Ermittlung des Owners
$objectowner = $object.PsBase.ObjectSecurity.Owner

#Ausgabe über Messagebox
[System.Windows.Forms.MessageBox]::Show("Objekt-Ersteller: $objectowner","OwnerSearch",0)

#Speicherung des ermittelten Wertes in der Zwischenablage
Set-Clipboard $objectowner

Man gibt in das Eingabefeld den SamAccountname des Objektes ein. Es kann ein Benutzer, eine Gruppe oder ein Computer sein. Beim Computer-Objekt ist darauf zu achten, dass ein $Zeichen an den Namen angefügt werden muss.

Entsprechend wird das Ergebnis als Information über eine „Message-Box“ angezeigt und auch in die Zwischenablage definiert. Dadurch kann der Wert direkt weiter verarbeitet werden.

Powershell

Powershell: Auslesen von Gruppen aus Azure-Unternehmensanwendungen

Posted on 13. Oktober 202113. Oktober 2021 By Daniel Lensing Keine Kommentare zu Powershell: Auslesen von Gruppen aus Azure-Unternehmensanwendungen

Im Rahmen einer Aktualisierung mussten die Anwender von mehreren Unternehmensapplikationen ermittelt werden.

Dazu wollte ich allerdings nur den Applikationsnamen definieren und eine entsprechenden CSV-Export erhalten. Bei meiner ersten Analyse fiel mir dann direkt auf, dass bei den betroffenen Zuordnungen nur Gruppen Definiert sind. Entsprechend ist das Skript aktuell nur auf diesen Sachverhalt abgestimmt.

#Definition der Azure-Unternehmensanwendung
$app_name = "Demo App"

#Definition der Exportdatei
$ExportFileCsv = "E:\DemoCompany\Export\AppUsers.csv"

### ----- Beginn Skripting ----- ###

#Verbindung zur AzureAD aufbauen
Connect-AzureAD

#Ermittlung der Applikationsdaten
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"

#Ermittlung der Angebundenen Azure AD-Gruppen
$assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $sp.ObjectId -All $true

#Verarbeitung der eingetragenen Gruppen
$groupMembers = foreach ($group in $assignments){

    #Ermittlung der Daten zur aktuellen Gruppe 
    $AzureADgroup = Get-AzureADGroup -SearchString $group.PrincipalDisplayName
            
    #Definition der ObjectID der aktuellen Gruppe
    $ObjectId = $AzureADgroup.ObjectId
    #Definition des Displaynames der aktuellen Gruppe
    $GroupName = $AzureADgroup.DisplayName

    #Kurze Pause...
    Start-Sleep -Milliseconds 200

    #Ermittlung der Mitglieder der aktuellen Gruppe
    Get-AzureADGroupMember -ObjectId $ObjectId | Select-Object -Property @{Name = 'GroupName'; Expression= {$GroupName}}, DisplayName, UserPrincipalName

}
#Export der ermittelten Daten in das Export-CSV
$groupMembers | Export-Csv -Path $ExportFileCsv -NoTypeInformation -Append -Encoding UTF8 -Delimiter ";"

Eine Erweiterung, so dass neben den Gruppen auch die Benutzer ermittelt werden, ist bereits auf dem ToDo-Zettel und wird eine V2.

Microsoft Azure, Powershell

Powershell: Attribut „LogonWorkstations“ verwalten

Posted on 12. Juli 202111. Juli 2021 By Daniel Lensing Keine Kommentare zu Powershell: Attribut „LogonWorkstations“ verwalten

Manchmal müssen auch selten genutzte Attribute gepflegt werden. In einem Fall aus der Vergangenheit mussten Probleme mit Verbindungen auf verschiedene Systeme analysiert werden. Dabei ist aufgefallen, dass der Wert „LogonWorkstations“ bei dem Anwender gefüllt war.

Daraufhin habe ich mir dieses Skript erstellt, mit dem man einiges mit dem Aufruf anpassen kann:

# LogonsWorkstation.ps1


# Das Skript kann unterschiedliche Modi:
# s = search 
# Es wird der aktuelle Eintrag angezeigt
# a = add 
# Es wird der aktuelle Eintrag hinzugefügt
# Alle weiteren Einträge werden entfernt
# m = modify
# Es wird der aktuelle Eintrag hinzugefügt
# Alle weiteren Einträge werden übernommen.
# r = replace
# Alle Einträge werden gelöscht
$mode=$args[0]

# Benutzer der angepasst werden soll
$User = $args[1]

# Bezeichnung des neuen Systems
$Workstation = $args[2]

# Gesamter Befehlssatz:
# .\logonWorkstation.ps1 m test01 WKSWin110001
# Dem User test01 wird das System WKSWin110001 zu den vorhandenen Systemen hinzugefügt.
# Sollte kein Eintrag vorhanden sein, wir dieser aks erster gesetzt.


# Ermittlung des aktuellen Wertes
$LogonWorkstations = Get-AdUser -Identity $User -Properties LogonWorkstations | select -ExpandProperty LogonWorkstations


if ($args[0] = "s")
{
$LogonWorkstations
}

if ($args[0] = "a")
{
Set-ADUser -Identity $User -LogonWorkstations "$Workstation"
}


if ($args[0] = "m")
{
Set-ADUser -Identity $User -LogonWorkstations "$LogonWorkstations,$Workstation"
}


if ($args[0] = "r")
{
Set-ADUser -Identity $User -LogonWorkstations $null
}

Hiermit können die üblichen Szenarien einfach umgesetzt werden.

Powershell

Seitennummerierung der Beiträge

Vorherige 1 2 3 4 … 10 Nächste

Daniel Lensing

Ich betreibe diesen Blog, bei dem ich meine Erfahrungen aus der IT & dem Berufsalltag sowie dem Wahnsinn des Lebens mit Höhen und Tiefen. Darunter meine „Erlebnisreise“ zum Planeten „Diabetes mellitus Typ-2“.

Translate:

Follow us

Kategorien

  • Allgemein (1)
  • Client (241)
    • Android (8)
    • Fedora (Linux) (5)
    • iOS (6)
    • Mac OS X (6)
    • Peripherie (5)
    • Ubuntu (Linux) (9)
    • Windows 10 (63)
    • Windows 11 (27)
    • Windows 7 (100)
    • Windows 8 (36)
    • Windows 8.1 (28)
    • Windows Mobile (2)
    • Windows Vista (65)
    • Windows XP (21)
  • Cloud (15)
    • Amazon AWS (1)
    • Microsoft Azure (7)
    • Office 365 (9)
  • Fortbewegung (58)
    • Auto (18)
    • Bahn (19)
    • Beinarbeit (6)
    • Flugzeug (4)
    • Zweirad (14)
  • IT-Nachrichten (37)
  • Leben Beruf und Gesundheit (216)
    • #t2dhero (58)
    • Arbeitszimmer (38)
    • Audio (22)
    • Film / Kino (7)
    • Gedanken (81)
    • Gesundheit (38)
    • Internet (7)
    • Lebensmittel & Essen (22)
    • Lesestoff (19)
    • Sport (11)
    • Veranstaltung (3)
  • Lehren & Lernen (50)
    • Forschung (2)
    • Konferenzen (3)
    • Lehre (1)
    • Präsentation (4)
    • Zertifizierung (42)
  • Programme (330)
    • Android-Apps (28)
    • Eigene Tools (12)
    • iOS-Apps (7)
    • Office (87)
    • Patchday+Updates (76)
    • Software (153)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (96)
    • AutoIT (1)
    • KiXtart (1)
    • PHP (3)
    • Power Automate (1)
    • Powershell (65)
    • VB.NET (10)
    • VBA (10)
    • VBS (10)
  • Server (162)
    • Citrix XenServer (2)
    • Exchange Server (27)
    • Lync Server (1)
    • System Center (4)
    • Ubuntu Server (2)
    • Windows Home Server (2)
    • Windows Server (92)
    • Windows Server 2012 (45)
    • Windows Server 2016 (15)
    • Windows Server 2019 (19)
    • Windows Server 2022 (18)
    • Windows Server 2025 (11)
  • Telekommunikation (38)
    • Festnetz (3)
    • Internet (13)
    • Mobilfunk (23)
  • Verkauf & Verlosung (1)
  • Web-Installationen (37)
    • Joomla (4)
    • Mastodon (1)
    • MediaWiki (10)
    • phpMyAdmin (2)
    • Piwik (4)
    • Wordpress (20)
Mastodon

Copyright © 2025 Daniels Tagesmeldungen.

Powered by PressBook WordPress theme