SQL Server Setup Tool – Entwickler-Dokumentation

SQL Server Setup Tool
Konfiguration & Verfahren

Standardisierte SQL-Server Installationen per WinForms-GUI, INI-Konfiguration und dbaTools. Dieses Dokument beschreibt alle Konfigurationsparameter, den Installationsablauf und die verwendeten technischen Verfahren für Entwickler und Administratoren.

PowerShell 5.1 dbaTools WinForms GUI INI-Konfiguration Runspace Threading AD-Validierung PostInstall SQL 2019 / 2022 / 2025 collations.txt NEU ShareBasePath NEU
Stand April 2025 – Änderungen gegenüber Vorversion:
  • [Collations] – Auswahlliste (List=) ausgelagert in Config\collations.txt (eine Collation pro Zeile, #-Kommentare). Standard-Collation und Domain-Overrides bleiben in der INI.
  • [dbaTools]SharePath ersetzt durch ShareBasePath. Der Code leitet \dbatools und \dbatools.library automatisch daraus ab.
Oberfläche

Benutzeroberfläche

Die WinForms-GUI gliedert sich in acht konfigurierbare Gruppen. Alle Combobox-Inhalte werden beim Start aus der INI geladen. Domänen-Standardwerte werden automatisch vorausgewählt und im Formular hervorgehoben.

SQL Server Setup – Standardisierte Installation SQL Server Version & Edition Version: 2022 Edition: Developer Domain: CONTOSO Instanzname Instanzname: MSSQLServer Standard (Standard: MSSQLServer) Sortierung (Collation) Sortierung: Latin1_General_CI_AS ✔ Domain-Vorgabe aktiv Quelle: collations.txt Service-Konto (leer = NT SERVICE\MSSQLSERVER) Konto (DOMAIN\User): CONTOSO\svc_sqlengine Passwort: •••••••••••• AD prüfen ✔ OK: Konto gültig Plattenlayout Layout-Quelle: Domain: CONTOSO Installation: C: Daten: F: Log: G: TempDB: H: Backup: I: Daten: F:\Daten\SQL\MSSQL$INST01\DATA Log: G:\Daten\SQL\MSSQL$INST01\LOG Backup: I:\Daten\Backup\MSSQL$INST01 Monitoring Monitoring-Typ: Typ2 Domain-Standard: 2 Optionale Komponenten SSRS (Reporting Services) SSAS (Analysis Services) TDP Sortierung für SSAS: identisch mit Instanz-Sortierung Aktionen Quellen kopieren Installation starten Schließen Protokoll [08:42:11] SQL Server Setup Tool gestartet. [08:42:11] Konfiguration geladen. Domain: CONTOSO [08:42:11] Sortierung: Latin1_General_CI_AS (Domain-Vorgabe, Quelle: collations.txt) [08:42:12] dbaTools: Import vom Share erfolgreich. Basis: 01_PreInstall\ [08:43:04] === Quellen kopieren startet === [08:43:04] Prüfe Quelle: \\fileserver\SQLSources\SQL2022 [08:43:05] Robocopy: 1.842 MB kopiert, ExitCode: 1 (OK) [08:51:18] === SQL Server Installation startet === [08:51:18] Version: 2022 Edition: Developer Instanz: INST01 Installation läuft...
① Version & Edition
INI [Versions] / [Editions]
② Instanzname
+ Reset-Button
③ Sortierung ▲NEU
Quelle: collations.txt
④ Service-Konto
AD-Prüfung, UPN-Normalisierung
⑤ Plattenlayout
Pfad-Vorschau inkl. Instanz
⑥ Monitoring
Domain-spezifischer Typ
⑦ Opt. Komponenten
SSRS / SSAS / TDP
⑧ Protokoll (Log)
Thread-sicher via MethodInvoker

Abb. 1: SQL Server Setup Tool – Hauptfenster (Beispiel: Domäne CONTOSO, Instanz INST01)

#GruppeInhaltKonfigurationsquelle
Version & EditionSQL-Version und Edition, Domänenanzeige[Versions], [Editions]
InstanznameFreitext + Reset-Button auf MSSQLServer[General] DefaultInstanceName
SortierungCombobox, Domain-Sortierung an erster StelleConfig\collations.txt, [Collations] Standard=, Domain_*
Service-KontoKonto + Passwort + AD-Prüfung mit Lockout-HinweisEingabe + AD-Bind
PlattenlayoutLaufwerksbuchstaben + Live-Pfad-Vorschau[DiskLayout_*], [Paths]
MonitoringTyp-Auswahl oder per INI ausgeblendet[Monitoring] Enabled, Types
Optionale Komp.SSRS / SSAS / TDP Checkboxen[OptionalComponents]
ProtokollSchwarzes Log-Fenster, Marquee-ProgressBar in StatusleisteLaufzeit / MethodInvoker

Abschnitt 1

Projektstruktur

Das SQL Server Setup Tool automatisiert die standardisierte Installation von Microsoft SQL Server in Unternehmensumgebungen. Eine WinForms-GUI führt den Administrator durch alle Konfigurationsschritte; Installation und Nachkonfiguration erfolgen vollständig per PowerShell und dbaTools.

SQLSetupTool\ ├── Main.ps1 # Einstiegspunkt ├── GUI\ │ └── MainForm.ps1 # WinForms, Event-Handler, Threading ├── Modules\ │ ├── Config.psm1 # INI-Parser, Domänenerkennung, collations.txt │ ├── Validation.psm1 # AD-Prüfung, Instanzname, Laufwerke │ ├── DiskLayout.psm1 # Pfadaufbau aus Laufwerken + SubPaths │ ├── CopySource.psm1 # Robocopy-Wrapper │ ├── Installation.psm1 # Install-DbaInstance, SSRS/SSAS/TDP │ ├── PostInstall.psm1 # Nachkonfiguration │ └── DbaToolsSetup.psm1 # dbaTools: Share → lokal → Gallery ├── Config\ │ ├── settings.ini # Zentrale Konfiguration │ └── collations.txt # ▲ NEU: Collation-Auswahlliste └── Scripts\ └── PostInstall.ps1 # Projektspezifische Nachkonfiguration
Datei / VerzeichnisZweck
Main.ps1Einstiegspunkt: Adminprüfung, Module laden, dbaTools sichern, GUI starten
GUI\MainForm.ps1WinForms Formular, alle Event-Handler, Hintergrundthread-Steuerung
Modules\Config.psm1INI-Parser, Domänenerkennung, collations.txt einlesen, Konfigurationsobjekt aufbauen
Modules\Validation.psm1AD-Konto-/Passwortprüfung, Instanzname, Laufwerke
Modules\DiskLayout.psm1SQL-Pfade aus Laufwerksbuchstaben + SubPaths aufbauen
Modules\CopySource.psm1Robocopy-Wrapper: Share → lokales Ziel
Modules\Installation.psm1Install-DbaInstance Aufruf, SSRS / SSAS / TDP
Modules\PostInstall.psm1Nachkonfiguration: Memory, MAXDOP, Agent, TempDB
Modules\DbaToolsSetup.psm1dbaTools aus ShareBasePath (beide Unterordner) oder Gallery laden
Config\settings.iniZentrale Konfigurationsdatei (alle Parameter)
Config\collations.txtCollation-Auswahlliste – eine pro Zeile, #-Kommentare erlaubt
Scripts\PostInstall.ps1Projekt-spezifische Nachkonfiguration (Vorlage)
7
PowerShell
Module
2
Konfig-Dateien
INI + collations.txt
3
SQL-Versionen
2019 / 2022 / 2025
0
GUI-Freezes
(Runspace-Threading)

Abschnitt 2

INI-Konfiguration (settings.ini)

Alle Combobox-Inhalte, Standardwerte, Pfade und Seriennummern werden beim Start aus der INI-Datei in Config\settings.ini gelesen. Änderungen erfordern keinen Neustart des Skripts – die Datei wird bei jedem Start neu eingelesen.

INI-Format: Zeilen ohne = werden vom Parser ignoriert. Listen (Versionen, Editionen) müssen als kommagetrennte Werte in einem einzigen Schlüssel stehen. Die Collation-Liste ist seit April 2025 ausgelagert in Config\collations.txt – siehe Abschnitt 2a.

[General]

SchlüsselBeispielwertBedeutung
DefaultVersion2022Vorausgew. SQL-Version beim Start
DefaultEditionDeveloperVorausgew. Edition
DefaultInstanceNameMSSQLServerStandardinstanzname (Reset-Button)
DefaultCollationSQL_Latin1_General_CP1_CI_ASFallback-Sortierung
SourceShare\\srv\SQLSourcesUNC-Pfad zu den Installationsmedien

[Versions] und [Editions]

SchlüsselBeispielwertBedeutung
Available2019,2022,2025Füllt Version-Combobox
StandardDeveloper,Standard,EnterpriseEditionen für 2019 und 2022
SQL2025Developer-Standard,Developer-Enterprise2025-spezifische Editionen

[Collations]

Die vollständige Auswahlliste wird seit April 2025 aus Config\collations.txt gelesen – siehe Abschnitt 2a. In der INI verbleiben nur noch die Standard-Collation und domänenspezifische Vorgaben.

settings.ini – [Collations] (aktueller Stand)
[Collations] 
# Globale Standardsortierung – Fallback wenn collations.txt fehlt 
Standard=SQL_Latin1_General_CP1_CI_AS 
 
# Domänenspezifische Vorgabe – erscheint an erster Stelle der Combobox 
# Format: Domain_<NETBIOSNAME> = <Collation> 
Domain_CONTOSO=Latin1_General_CI_AS 
 
# List= entfällt – vollständige Liste in Config\collations.txt

[Paths] – Konfigurierbare SQL-Pfade

Die Unterverzeichnis-Teile werden mit dem Laufwerksbuchstaben aus [DiskLayout_*] und dem Instanz-Suffix kombiniert. Der Suffix lautet MSSQLSERVER für die Standardinstanz, sonst MSSQL$<Instanzname>.

SchlüsselDefaultResultierender Pfad (Beispiel)
InstallSubPathMicrosoft SQL ServerC:\Microsoft SQL Server
BackupSubPathDaten\BackupB:\Daten\Backup\MSSQL$INST01
DataSubPathDaten\SQLD:\Daten\SQL\MSSQL$INST01\DATA
TempSubPathDaten\SQLT:\Daten\SQL\MSSQL$INST01\DATA
LogSubPathDaten\SQLE:\Daten\SQL\MSSQL$INST01\LOG

[DiskLayout_Standard] und domänenspezifische Layouts

Laufwerksbuchstaben je Pfadtyp. Für jede Domäne kann eine eigene Sektion [DiskLayout_<NETBIOSNAME>] angelegt werden, die automatisch greift wenn der Server Mitglied dieser Domäne ist.

settings.ini – DiskLayout Standard und domänenspezifisch
[DiskLayout_Standard] 
DataDrive=D 
LogDrive=E 
TempDrive=T 
BackupDrive=B 
InstallDrive=C 
 
# Überschreibt Standard für CONTOSO-Domäne 
[DiskLayout_CONTOSO] 
DataDrive=F 
LogDrive=G 
TempDrive=H 
BackupDrive=I 
InstallDrive=C

[SerialNumbers]

Schlüsselformat: SQL<Version>_<Edition>. Developer-Editionen bleiben leer – kein Produktkey erforderlich.

SchlüsselWertHinweis
SQL2022_Developer(leer)Kein Key benötigt
SQL2022_StandardXXXXX-XXXXX-...Volumenlizenz
SQL2025_Developer-StandardXXXXX-XXXXX-...Neue 2025-Edition
SQL2025_Developer-EnterpriseXXXXX-XXXXX-...Neue 2025-Edition

Abschnitt 2a

Collation-Auswahlliste (Config\collations.txt)

Die vollständige Liste der zur Auswahl stehenden Sortierungen wurde aus der settings.ini ausgelagert. Sie liegt als einfache Textdatei im selben Verzeichnis wie die INI und kann ohne Kenntnisse des INI-Formats gepflegt werden.

Trennung der Verantwortlichkeiten: Die Standard-Collation ([Collations] Standard=) und domänenspezifische Vorgaben (Domain_<n>=) bleiben in der settings.ini und steuern die Vorauswahl. Die collations.txt bestimmt den Inhalt der Combobox.

Datei-Eigenschaften

EigenschaftWertHinweis
Dateinamecollations.txtFest – wird automatisch gesucht
SpeicherortConfig\Gleiches Verzeichnis wie settings.ini
EncodingUTF-8Empfohlen
FormatEine Collation pro ZeileKeine Trennzeichen
Kommentare# ...Zeile beginnt mit # → ignoriert
LeerzeilenErlaubtZur Strukturierung nutzbar

Verhalten und Priorität

Config\collations.txt – Beispielinhalt
# SQL Server-Sortierungen (Latin / CI) 
SQL_Latin1_General_CP1_CI_AS 
SQL_Latin1_General_CP1_CI_AI 
SQL_Latin1_General_CP1_CS_AS 
 
# Windows-Sortierungen (Deutsch / Mitteleuropa) 
Latin1_General_CI_AS 
Latin1_General_CS_AS 
German_PhoneBook_CI_AS 
 
# Weitere europäische Sprachen 
Finnish_Swedish_CI_AS 
French_CI_AS 
Polish_CI_AS 
 
# BIN 
Latin1_General_BIN 
Latin1_General_BIN2

Auflösungsreihenfolge in Get-CollationList

Config.psm1 – Get-CollationList (Ablauf)
# 1. collations.txt lesen 
$list = Get-Content "$ConfigDir\collations.txt" | 
Where-Object { $_ -match '\S' -and $_ -notmatch '^#' } | 
ForEach-Object { $_.Trim() } 
 
# 2. Datei nicht vorhanden oder leer → Fallback auf Standard-Collation 
if ($list.Count -eq 0) { return @($DefaultCollation) } 
 
# 3. Domänen-Vorgabe an erste Position, Duplikat entfernen 
if ($DomainCollation) { 
$list = @($DomainCollation) + ($list | Where-Object { $_ -ne $DomainCollation }) 
} 
 
return $list # → Combobox-Inhalt
SituationVerhalten
collations.txt vorhanden und gefülltListe aus Datei; Domain-Collation an Position 1
collations.txt fehltWarnung im Log; nur Standard= aus INI wird angeboten
collations.txt leer (nur Kommentare)Warnung im Log; nur Standard= aus INI wird angeboten
Domain-Collation ist bereits in der ListeDuplikat wird entfernt, trotzdem an Position 1
Keine Domain-Collation konfiguriertReihenfolge aus Datei unverändert

Neue Sortierung hinzufügen

Einfach eine neue Zeile mit dem exakten SQL-Server-Collationnamen in collations.txt eintragen. Das Tool liest die Datei beim nächsten Start automatisch neu ein. Kein Eingriff in settings.ini erforderlich.


Abschnitt 2b

dbaTools-Share-Konfiguration ([dbaTools])

Der bisherige Schlüssel SharePath wurde durch ShareBasePath ersetzt. Der Code leitet daraus automatisch die beiden benötigten Unterverzeichnisse ab – manuelles Pflegen zweier Pfade entfällt.

Share-Struktur

# Konfiguriert in settings.ini: ShareBasePath = W:\75084-Datenbanken\MSSQL\CCM\_MSSQL_GUI\01_PreInstall # Automatisch abgeleitet: 01_PreInstall\ ├── dbatools\ # Hauptmodul → <ShareBasePath>\dbatools\dbatools.psd1 └── dbatools.library\ # Bibliothek (ab dbaTools 2.x erforderlich)
Beide Unterordner müssen vollständig entpackt vorhanden sein. Die Datei <ShareBasePath>\dbatools\dbatools.psd1 muss existieren. Der Anwender ist für die Aktualität der Share-Versionen verantwortlich.

settings.ini – [dbaTools]

settings.ini – [dbaTools] (aktueller Stand)
[dbaTools] 
# Basisverzeichnis auf dem Share. 
# Darunter werden automatisch erwartet: 
# <ShareBasePath>\dbatools – Hauptmodul 
# <ShareBasePath>\dbatools.library – Bibliothek (dbaTools >= 2.x) 
ShareBasePath = W:\75084-Datenbanken\MSSQL\CCM\_MSSQL_GUI\01_PreInstall 
ModuleName = dbatools 
 
# SharePath= (alte Variante) entfällt

Ladereihenfolge (DbaToolsSetup.psm1)

DbaToolsSetup.psm1 – Assert-DbaToolsReady
# 1. Bereits im Runspace geladen? 
if (Get-Module -Name dbatools) { return } 
 
# 2. Lokal installiert (Get-Module -ListAvailable)? 
if (Get-Module -ListAvailable -Name dbatools) { 
Import-Module dbatools; return 
} 
 
# 3. Share: ManifestPath erreichbar? 
# <ShareBasePath>\dbatools\dbatools.psd1 
if (Test-Path $DbaToolsConfig.ManifestPath) { 
 
# dbatools.library-Parent temporär in PSModulePath eintragen 
$env:PSModulePath = $libParent + ';' + $env:PSModulePath 
 
# Beide Ordner nach C:\Program Files\WindowsPowerShell\Modules\ kopieren 
foreach ($folder in @('dbatools', 'dbatools.library')) { 
if (-not (Test-Path $dst)) { 
Copy-Item -Path $src -Destination $dst -Recurse -Force 
} 
} 
Import-Module $DbaToolsConfig.ManifestPath; return 
} 
 
# 4. Fallback: PowerShell Gallery 
Install-Module dbatools -Scope AllUsers -Force
dbatools.library: Ab dbaTools 2.x ist das Hilfsmodul dbatools.library zwingend erforderlich. Es wird vor dem Import-Module-Aufruf temporär in $env:PSModulePath eingetragen, damit dbatools.psd1 die Abhängigkeit auflösen kann. Die lokale Kopie verbleibt dauerhaft unter C:\Program Files\WindowsPowerShell\Modules\dbatools.library\.

Abgeleitete Pfade im Konfigurationsobjekt

EigenschaftWert (Beispiel)
ShareBasePathW:\...\01_PreInstall
ModulePathW:\...\01_PreInstall\dbatools
LibraryPathW:\...\01_PreInstall\dbatools.library
ManifestPathW:\...\01_PreInstall\dbatools\dbatools.psd1
LocalTargetDirC:\Program Files\WindowsPowerShell\Modules

Abschnitt 3

Ablauf & Verfahren

Startsequenz (Main.ps1)

Beim Aufruf durchläuft Main.ps1 folgende Schritte in dieser Reihenfolge, bevor die GUI erscheint:

  1. Adminrechte prüfen (WindowsPrincipal) – Abbruch mit Dialog bei Fehlschlag
  2. Alle sieben Module laden (Import-Module -Force)
  3. INI-Konfiguration lesen, Konfigurationsobjekt aufbauen, Domäne ermitteln
  4. Collation-Liste aus Config\collations.txt einlesen
  5. dbaTools sicherstellen – mit Splash-Fenster und Marquee-ProgressBar
  6. Relative PostInstall-Skriptpfade in absolute Pfade auflösen
  7. GUI starten (Show-SetupForm)

Domänenerkennung und domänenspezifische Konfiguration

Get-CurrentDomain liest den NetBIOS-Domänennamen via Win32_ComputerSystem. Der Name wird großgeschrieben und als Suchschlüssel für folgende INI-Elemente verwendet:

  • [Collations] Domain_<n> – Sortierungsvorgabe, wird an erste Combobox-Position gesetzt
  • [DiskLayout_<n>] – Eigene Sektion mit Laufwerksbuchstaben
  • [Monitoring] Domain_<n> – Vorauswahl Monitoring-Typ

AD-Validierung (Validation.psm1)

Validation.psm1 – AD-Prüfablauf
# Stufe 1: UPN normalisieren 
# user@domain.com -> DOMAIN\user 
$normalized = ConvertTo-DomainAccountFormat -AccountName $account 
 
# Stufe 2: Passwort validieren (genau 1 DC-Bind-Versuch) 
$ctx.ValidateCredentials($samName, $password) 
# Bei Fehler: Lockout-Zähler um 1 erhöht
Lockout-Policy: Die Passwortprüfung erzeugt exakt einen DC-Bind-Versuch. Bei einer 5-Versuch-Policy verbraucht ein falsches Passwort einen von fünf Versuchen. Das Tool weist den Anwender explizit darauf hin.

Abschnitt 4

GUI-Threading (Runspace-Konzept)

Lange Operationen (Robocopy, SQL-Installation, PostInstall) laufen in einem separaten PowerShell-Runspace damit die WinForms-GUI nicht einfriert.

#RegelUmsetzung
01 GUI-Werte als Snapshot kopieren Alle Controls werden vor Thread-Start ausgelesen, nie im Worker-Thread
02 GUI-Updates nur per Invoke $control.Invoke([MethodInvoker]{...}) – nie direkte Property-Zuweisung
03 InvokeRequired prüfen Hilfsfunktionen prüfen InvokeRequired vor jedem Aufruf
04 Timer-basiertes Cleanup Timer im GUI-Thread prüft alle 500 ms ob Worker fertig ist
MainForm.ps1 – Thread-sicheres Logging
$logCallback = [ScriptBlock]{ 
param([string]$msg) 
$line = "$(Get-Date -Format 'HH:mm:ss') $msg" 
$txtLog.Invoke([System.Windows.Forms.MethodInvoker]{ 
$txtLog.AppendText("$line`r`n") 
$txtLog.ScrollToCaret() 
}) 
}
MethodInvoker statt System.Action: In PowerShell 5.1 muss [System.Windows.Forms.MethodInvoker] verwendet werden. [System.Action] wird als Cmdlet-Name interpretiert und führt zu einem CommandNotFoundException.

Abschnitt 5

PostInstall-Nachkonfiguration

Nach erfolgreicher SQL-Server Installation ruft der Worker-Thread automatisch Invoke-PostInstall auf. Alle Aktionen werden im Log-Fenster protokolliert.

FunktionAktiondbaTools-Befehl
Set-SqlMaxMemoryMax Server Memory = 90% des physischen RAMSet-DbaMaxMemory
Set-SqlOptimizeForAdHocoptimize for ad hoc workloads = 1Set-DbaSpConfigure
Set-SqlCostThresholdCost Threshold for Parallelism = 50Set-DbaSpConfigure
Set-SqlMaxDopMAXDOP = min(8, logische CPUs)Set-DbaSpConfigure
Enable-SqlAgentAutoStartSQL Agent = Automatic + StartSet-Service / Start-Service
Set-SqlTempDbFilesTempDB-Dateien = max(4, min(8, CPUs))Set-DbaTempDbConfig
Invoke-CustomPostInstallScriptScripts\PostInstall.ps1 ausführenBenutzerdefiniert
Scripts\PostInstall.ps1 – Vorlage // Hier projektspezifische Befehle eintragen
param([string]$InstanceName, [ScriptBlock]$LogAction) 
 
$sqlInst = if ($InstanceName -eq 'MSSQLSERVER') { 
$env:COMPUTERNAME 
} else { "$($env:COMPUTERNAME)\$InstanceName" } 
 
# Backup-Kompression aktivieren 
Set-DbaSpConfigure -SqlInstance $sqlInst -Name 'DefaultBackupCompression' -Value 1 
 
# Operator anlegen 
New-DbaAgentOperator -SqlInstance $sqlInst -Name 'DBA-Team' -EmailAddress Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.'

Abschnitt 6

Erweiterung & Systemvoraussetzungen

Neue SQL-Version hinzufügen

  • [Versions] Available= in settings.ini erweitern
  • [Editions] ggf. neue Sektion für versionsspezifische Editionen
  • [SerialNumbers] neue Schlüssel SQL<Version>_<Edition>
  • Installationsmedien auf Share unter <SourceShare>\SQL<Version>\ bereitstellen

Neue Domäne konfigurieren

  • [DiskLayout_<NETBIOSNAME>] Sektion in settings.ini anlegen
  • [Collations] Domain_<NETBIOSNAME>=<Collation> eintragen
  • [Monitoring] Domain_<NETBIOSNAME>=<Typ> eintragen (optional)

Collation-Liste anpassen

  • Config\collations.txt öffnen
  • Neue Zeile mit exaktem SQL-Server-Collationnamen eintragen
  • #-Kommentarzeilen zur Strukturierung verwenden
  • Tool neu starten – die Datei wird beim Start neu eingelesen
  • Kein Eingriff in settings.ini erforderlich

dbaTools-Share umziehen oder aktualisieren

  • [dbaTools] ShareBasePath= auf neues Basisverzeichnis setzen
  • Sicherstellen dass beide Unterordner vorhanden sind: \dbatools und \dbatools.library
  • Lokale Kopien in C:\Program Files\WindowsPowerShell\Modules\ löschen wenn ein Update eingespielt wird – das Tool kopiert beim nächsten Start automatisch neu

Systemvoraussetzungen

KomponenteAnforderungHinweis
PowerShell5.1 oder höherWMF 5.1 auf WS 2016+
BetriebssystemWindows Server 2019 / 2022WinForms benötigt .NET Framework
BerechtigungenLokaler AdministratorWird beim Start geprüft
dbaToolsAktuell (Share oder Gallery)ShareBasePath hat Vorrang; \dbatools und \dbatools.library müssen vorhanden sein
NetzwerkUNC-Zugriff auf SourceShareFür Robocopy und dbaTools-Share
Active DirectoryOptionalNur für AD-Kontoprüfung
.NET Framework4.7.2+WinForms, System.DirectoryServices
Ausführung: powershell.exe -ExecutionPolicy Bypass -File ".\Main.ps1"