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 – Metformin
    • IVOM – Präzise Medikamentengabe ins Auge
      • Medikament – Eylea (Aflibercept)
      • Medikament – Lucentis (Ranibizumab )
      • Medikament – Vabysmo (Faricimab)
    • Medikament – Forxiga (Dapagliflozin)
  • Disclaimer
  • Toggle search form

Kategorie: Powershell

PDF-Dateien aus Ordner über Powershell drucken

Posted on 7. Oktober 20206. Oktober 2020 By Daniel Lensing Keine Kommentare zu PDF-Dateien aus Ordner über Powershell drucken

Im vergangenen Jahr musste ich regelmäßig Abrechnungen erstellen. Nicht zu jedem Zeitpunkt stand mir direkt ein Drucker zur Verfügung. Teilweise kam es dabei zu über 20 erforderlichen Ausdrucken. Entsprechend hatte ich auch keine Lust diese Ausdrucke manuell anzusteuern. Somit habe ich mir ein Skript zur automatischen Start der Ausdrucke erstellt.

#Definition des Ordners mit den Druck-Dateien
$Directory = "C:\PDFPrint\"
 
#STEP 1: Ermittle alle PDF-Dateien im Ordner
#STEP 2: Starte für jedes File den Print-Prozess
#STEP 3: Warte bitte 30 Sekunden zwischen den Ausdrucken
 
Get-ChildItem -path $Directory -recurse -include *.pdf | 
ForEach-Object {Start-Process -FilePath $_.fullname -Verb Print -PassThru |
%{sleep 30;$_} |
kill }
 
#STEP 4: Lösche die vorhandenen Dateien
Get-ChildItem -path $Directory -recurse -include *.pdf | Remove-Item -Force

Ich habe bei der Standard-Einstellung für PDF-Dateien die besten Erfahrungen bei der Nutzung des Adobe Readers gemacht. Der Ausdruck erfolgt bei dieser Methode über den Standard-Drucker. Ich berücksichtige auch eventuelle Unterordner im definierten Ordner.

Dieses Vorgehen konnte ich auch schon mit Word- und Excel-Dateien nachstellen.

Powershell

Formatierung von Intune-Auditlog-Daten für Vergleiche

Posted on 6. Juni 20195. Juni 2019 By Daniel Lensing Keine Kommentare zu Formatierung von Intune-Auditlog-Daten für Vergleiche

Im Regelfall können mehrere Administratoren auf die „Profile“ im Intune zugreifen und Änderungen vornehmen. Während einer Fehleranalyse kann es dabei sinnvoll sein, dass man sich die Veränderungen sichtbar macht. Im „Audit Log“ wird dargestellt, wann und wer Veränderungen am jeweiligen Objekt vorgenommen hat. Die Veränderung selber werden in einem Text-Format dargestellt, so dass die Werte „Property“, „New Value“ und „Old Value“ für jede Option untereinander dargestellt werden. Dieses ist für einen Vergleich etwas unhandlich.

Um dieses passend zu formatieren habe ich das folgende Skript mir geschrieben:

$Quelle = "C:\Intune_Profile_Activity_log\changelog.txt"
$Ziel = "C:\Intune_Profile_Activity_log\changelog_Merge.txt"
 
gcb > $Quelle
 
get-content $Quelle -readcount 3 | foreach  {$_ -join ";"} | out-file $Ziel
(Get-content $Ziel) -replace 'Property: ' | out-file $Ziel
(Get-content $Ziel) -replace 'Old Value: ' | out-file $Ziel
(Get-content $Ziel) -replace 'New Value: ' | out-file $Ziel

Die Daten werden direkt aus der Zwischenablage kopiert und verarbeitet. Somit werden die Daten per Semikolon getrennt in die Zieldatei geschrieben.

Powershell

RSAT-Installation unter Win10 Build 1809 per Powershell

Posted on 18. April 201918. April 2019 By Daniel Lensing Keine Kommentare zu RSAT-Installation unter Win10 Build 1809 per Powershell

Hier ist eine Auflistung der RSAT-Features, welche unter Windows 10 Build 1809 per Powershell installiert werden können

RSAT: Tools für Active Directory Domain Services und Lightweight Directory Services

Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0

RSAT: Verwaltungshilfsprogramme für die BitLocker-Laufwerkverschlüsselung

Add-WindowsCapability -Online -Name Rsat.BitLocker.Recovery.Tools~~~~0.0.1.0

RSAT: Active Directory Certificate Services Tools

Add-WindowsCapability -Online -Name Rsat.CertificateServices.Tools~~~~0.0.1.0

RSAT: DHCP-Servertools

Add-WindowsCapability -Online -Name Rsat.DHCP.Tools~~~~0.0.1.0

RSAT: DNS-Servertools

Add-WindowsCapability -Online -Name Rsat.Dns.Tools~~~~0.0.1.0

RSAT: Failoverclustering-Tools

Add-WindowsCapability -Online -Name Rsat.FailoverCluster.Management.Tools~~~~0.0.1.0

RSAT: Tools für Dateidienste

Add-WindowsCapability -Online -Name Rsat.FileServices.Tools~~~~0.0.1.0

RSAT: Group Policy Management Tools

Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0

RSAT: IP-Adressverwaltungsclient (IPAM)

Add-WindowsCapability -Online -Name Rsat.IPAM.Client.Tools~~~~0.0.1.0

RSAT: Data Center Bridging LLDP-Tools

Add-WindowsCapability -Online -Name Rsat.LLDP.Tools~~~~0.0.1.0

RSAT: Netzwerkcontroller-Verwaltungstools

Add-WindowsCapability -Online -Name Rsat.NetworkController.Tools~~~~0.0.1.0

RSAT: Tools für Netzwerklastenausgleich

Add-WindowsCapability -Online -Name Rsat.NetworkLoadBalancing.Tools~~~~0.0.1.0

RSAT: Tools für die Remotezugriffsverwaltung

Add-WindowsCapability -Online -Name Rsat.RemoteAccess.Management.Tools~~~~0.0.1.0

RSAT: Remote Desktop Services Tools

Add-WindowsCapability -Online -Name Rsat.RemoteDesktop.Services.Tools~~~~0.0.1.0

RSAT: Server-Manager

Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0

RSAT: Abgeschirmte VM-Tools

Add-WindowsCapability -Online -Name Rsat.Shielded.VM.Tools~~~~0.0.1.0

RSAT: Storage Migration Service Management-Tools

Add-WindowsCapability -Online -Name Rsat.StorageMigrationService.Management.Tools~~~~0.0.1.0

RSAT: Storage Replica Module for Windows PowerShell

Add-WindowsCapability -Online -Name Rsat.StorageReplica.Tools~~~~0.0.1.0

RSAT: System Insights-Modul für Windows PowerShell

Add-WindowsCapability -Online -Name Rsat.SystemInsights.Management.Tools~~~~0.0.1.0

RSAT: Volume Activation Tools

Add-WindowsCapability -Online -Name Rsat.VolumeActivation.Tools~~~~0.0.1.0

RSAT: Windows Server Update Services-Tools

Add-WindowsCapability -Online -Name Rsat.WSUS.Tools~~~~0.0.1.0
Powershell

Powershell: Abfrage des AD-User-Passwortalters

Posted on 19. Februar 201919. Februar 2019 By Daniel Lensing Keine Kommentare zu Powershell: Abfrage des AD-User-Passwortalters

Im Rahmen einer Entstörung von AD-Benutzeraccounts benötigte ich die aktuelle Passwort-Daten beim Anruf der Benutzer. Dazu habe ich mir ein kleines Skript geschrieben. Dieses berücksichtigt die folgenden Szenarien:

  • AD-Benutzer gibt es nicht
  • AD-Benutzer ist deaktiviert
  • AD-Benutzer hat ein Ablaufdatum und dieses ist überschritten
  • AD-Benutzer muss sein Kennwort bei der nächsten Anmeldung ändern
  • AD-Benutzer hat keinen Passwort-Ablauf
  • AD-Benutzer ist gesperrt

Wenn dieses alles nicht zutrifft werden folgende 2 Definitionen zur Berechnung des Passwortalters herangezogen:

  • AD-Benutzer nutzt die Default Domain Policy
  • AD-Benutzer nutzt eine Fine-grained Password Policy
Import-Module ActiveDirectory -Force
 
If ($args)
{
$Userlogin = $args[0]
}
 
else
 
{
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
 
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Passwort-Display'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
 
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
 
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'Cancel'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)
 
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Bitte sAMAccountName eingeben:'
$form.Controls.Add($label)
 
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
 
$form.Topmost = $true
 
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()
 
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $Userlogin = $textBox.Text
}
 
if ($result -eq [System.Windows.Forms.DialogResult]::Cancel)
{
    exit
}
 
}
 
$Usercheck = Get-Aduser -filter {samaccountname -eq $userlogin}
 
If ($usercheck -eq $NULL)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Der Benutzer existiert nicht.","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
$employee = Get-AdUser $Userlogin -Properties enabled,PasswordNeverExpires,PasswordLastSet,Displayname,LockedOut,"msDS-UserPasswordExpiryTimeComputed",AccountExpirationDate
 
If ($employee.enabled -like "False")
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer "+$employee.displayname+" ist deaktiviert","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
If (($employee.AccountExpirationDate) -eq $null)
{
}
else
{
 
$Ablaufdatum = ((get-date) - ($employee.AccountExpirationDate))
$Ablauftage=$Ablaufdatum.days
 
If ($Ablauftage -gt "0")
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+ "Ablaufdatum des Accounts: "+$employee.AccountExpirationDate,"User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
}
 
 
If ($employee.PasswordLastSet -eq $null)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Das Passwort des Accounts muss bei der nächsten Anmeldung geändert werden.","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
If ($employee.passwordneverexpires -like "True")
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Das Passwort des Accounts läuft nicht ab.","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
If ($employee.LockedOut -like "True")
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Der Account ist gesperrt.","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Error)
exit
}
 
$FGPP=(Get-ADUserResultantPasswordPolicy $Userlogin)
 
If($fgpp.name -eq $null) 
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$expireDate=((Get-adUser($Userlogin) -Properties PassWordLastSet).PasswordLastSet + (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Ticks)
$daysleft=($expireDate-(get-date)).Days
 
if($daysleft-le "0")
 
{
$daysnegative =-$daysleft
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Regelwerk: Default Domain Policy `n`n"+"Das Passwort ist seit "+<span style="display: inline !important; float: none; background-color: transparent; color: #2b2b2b; cursor: text; font-family: 'Philosopher',sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">$daysnegative</span>+" Tagen abgelaufen. `n`n"+"Genauer Zeitstempel: "+$expireDate+"","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Warning)
}
 
else{
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Regelwerk: Default Domain Policy `n`n"+"Das Passwort muss in "+$daysleft+" Tagen geändert werden. `n`n"+"Genauer Zeitstempel: "+$expireDate+"","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Information)
}
exit
}
 
else{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$expireDate=((Get-adUser($Userlogin) -Properties PassWordLastSet).PasswordLastSet + (Get-ADUserResultantPasswordPolicy -Identity $Userlogin).MaxPasswordAge.Ticks)
$daysleft=($expireDate-(get-date)).Days
 
if($daysleft-le "0")
 
{
$daysnegative =-$daysleft
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Regelwerk: "+$fgpp.Name+" `n`n"+"Das Passwort ist seit "+$daysnegative+" Tagen abgelaufen. `n`n"+"Genauer Zeitstempel: "+$expireDate+"","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Warning)
}
 
else{
[System.Windows.Forms.MessageBox]::Show("Benutzer: "+$employee.displayname+"  `n`n"+"Regelwerk: "+$fgpp.Name+" `n`n"+"Das Passwort muss in "+$daysleft+" Tagen geändert werden. `n`n"+"Genauer Zeitstempel: "+$expireDate+"","User " +$Userlogin,0,[System.Windows.Forms.MessageBoxIcon]::Information)
}
exit

Damit die Daten ordnungsgemäß abgefragt werden können, benötigt der Ausführende die Leseberechtigungen auf den Container „Password Setting Objects“ im System-Ordner der Domäne.

Das Skript kann per GUI sowie per Skript gestartet werden.

Powershell

PowerShell: DHCP-Leases exportieren

Posted on 18. Dezember 2018 By Daniel Lensing Keine Kommentare zu PowerShell: DHCP-Leases exportieren

Manchmal kann es Sinn ergeben, dass man die gezogenen Leases eines Servers ausgibt. Dieses ist mit einem kleinen Skript möglich:

Get-DHCPServerV4Scope 
| ForEach {
    Get-DHCPServerv4Lease -ScopeID $_.ScopeID
} 
| Select-Object IPAddress,HostName,ClientID,AddressState,LeaseExpiryTime 
| Export-Csv ".\$($env:COMPUTERNAME)-Reservations.csv" -NoTypeInformation

Dieses ist gedacht direkt auf dem Server aufgerufen zu werden. Dabei werden alle DHCP-Scopes berücksichtigt. Der Dateiname des Exports wird mit dem Servernamen als Start definiert.

Entsprechend werden aktive und inaktive Reservierungen neben den dynamisch verteilten IP-Adressen aufgelistet. Die aus dem jeweiligen Pool des Servers vergebenen Adressen werden inklusive dem Ablaufdatum ausgegeben.

 

Powershell

Powershell: Ausdrucke pro Drucker ermitteln

Posted on 6. Dezember 20186. Dezember 2018 By Daniel Lensing Keine Kommentare zu Powershell: Ausdrucke pro Drucker ermitteln

Vor einer Umstellung oder auch einer Abschaltung eines Druckservers kann ein Audit der Druckdaten sinnvoll sein. Dabei wird ermittelt das Skript in den Parametern eines Zeitfensters, welcher Drucker wieviel Druckaufträge verarbeitet hat.

$Startzeit = "24.11.2018 00:00:00"
$Endzeit = "24.11.2018 23:59:59"
 
$ZentralDatei ="E:\Audit\Zentraldatei.csv"
$Auswertung ="E:\Audit\Auswertung.csv"
 
$Druckerliste = @()
 
$Resultate = Get-WinEvent -FilterHashTable @{LogName="Microsoft-Windows-PrintService/Operational"; ID=307; StartTime=$Startzeit; EndTime=$Endzeit;}
 
ForEach($Resultat in $Resultate){
  $Datensatz = [xml]$Resultat.ToXml()
  $DatenDetails = New-Object -TypeName psobject -Property @{
 
      Druckername = $Datensatz.Event.UserData.DocumentPrinted.Param5
      Zeitstempel = $Resultat.TimeCreated
 
      }
    $Druckerliste += $DatenDetails
  }
 
 
$Druckerliste | Export-Csv -LiteralPath $ZentralDatei -NoTypeInformation
 
 
Import-Csv $ZentralDatei | Group-Object Druckername | Select-Object Name, Count | Sort-Object -Property name | Export-csv $Auswertung -NoTypeInformation

Das eingesetzte CMDlet „Get-WinEvent“ steht seit Windows Server 2008 R2 und späteren Betriebssystemen zur Verfügung.

Um die Daten zu erhalten, muss allerdings in der Ereignisanzeige das Log für „Microsoft \ Windows \ Printservices \ Operational“ aktiviert worden sein. Dieses sollte auch vorzeitig durchgeführt worden sein, um längere Zeiträume zu überwachen. Die Daten können nicht rückwirkend erstellt werden. Anbei die schnelle Umsetzung per PowerShell-Aufruf:

$EventLogging = Get-WinEvent -ListLog 'Microsoft-Windows-PrintService/Operational'
$EventLogging.IsEnabled = $true
$EventLogging.MaximumSizeInBytes = 1000000
$Eventlogging.LogMode = "Circular"
$EventLogging.SaveChanges()

Mit diesem Befehlssatz wird das erforderliche Eintrag in der Ereignisanzeige aktiviert. Dabei wird ein 1 GigaByte großes Log erstellt. Wenn der Schwellwert erreicht ist, wird beim Hinzufügen eines neuen Ereignisses das Älteste entfernt.

In der Datei „Auswertung.csv“ stehen dann die Druckernamen sowie die Anzahl der Ausdrucke im Zeitraum ausgedruckt wurden.

Powershell, Windows Server

Powershell: Persönliches Laufwerk bei AD-Benutzern setzen

Posted on 23. November 201823. November 2018 By Daniel Lensing Keine Kommentare zu Powershell: Persönliches Laufwerk bei AD-Benutzern setzen

In einem Projekt sollte das Benutzer-Verzeichnis aus dem Bereich des Loginskriptes entfernt und in das Benutzer-Objekt des Active Directory verlagert werden. Da es sich um eine 4-stellige der Anzahl sowie mehreren Verzeichnispfaden handelte, wollte ich dieses gern über PowerShell abarbeiten lassen.

Bei einem meiner Tests kam es dann zum Problem, dass nicht der geplante Laufwerksbuchstabe im Benutzerprofil genutzt wurde. Der letzte freie Buchstabe, in meinem Fall „Z:“, wurde in meinem Fall verbunden. Im AD-Objekt wurde auch der korrekte Buchstabe angezeigt. Bei dem hier korrekt abgebildeten Befehl hatte ich den Doppelpunkt „vergessen“:

Set-ADUser tester01 -HomeDrive "P:" -HomeDirectory "\\Server01\Freigabe\Home\tester01"

Dieses wird in PowerShell ohne Fehlermeldung angenommen. Aus diesem Grund fiel mir diese „Unschärfe“ erst beim Test auf.

Powershell

Seitennummerierung der Beiträge

Vorherige 1 … 4 5 6 … 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 (244)
    • Android (8)
    • Fedora (Linux) (5)
    • iOS (6)
    • Mac OS X (6)
    • Peripherie (5)
    • Ubuntu (Linux) (9)
    • Windows 10 (63)
    • Windows 11 (30)
    • 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 (59)
    • Auto (19)
    • Bahn (19)
    • Beinarbeit (6)
    • Flugzeug (4)
    • Zweirad (15)
  • IT-Nachrichten (37)
  • Leben Beruf und Gesundheit (218)
    • #t2dhero (59)
    • Arbeitszimmer (38)
    • Audio (22)
    • Film / Kino (7)
    • Gedanken (81)
    • Gesundheit (38)
    • Internet (7)
    • Lebensmittel & Essen (23)
    • Lesestoff (20)
    • Sport (11)
    • Veranstaltung (3)
  • Lehren & Lernen (50)
    • Forschung (2)
    • Konferenzen (3)
    • Lehre (1)
    • Präsentation (4)
    • Zertifizierung (42)
  • Programme (333)
    • Android-Apps (28)
    • Eigene Tools (13)
    • iOS-Apps (7)
    • Office (88)
    • Patchday+Updates (77)
    • Software (155)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (97)
    • AutoIT (2)
    • KiXtart (2)
    • PHP (3)
    • Power Automate (1)
    • Powershell (66)
    • VB.NET (11)
    • VBA (10)
    • VBS (10)
  • Server (164)
    • 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 (21)
    • Windows Server 2022 (20)
    • Windows Server 2025 (13)
  • 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 © 2026 Daniels Tagesmeldungen.

Powered by PressBook WordPress theme