Ich wollte Benutzern ermöglichen, ein Standardprofil für PowerShell zu erstellen, um einige Einstellungen zu überschreiben, und landete schließlich mit dem folgenden Einzeiler (mehrere Anweisungen ja, aber können in PowerShell eingefügt und auf einmal ausgeführt werden, was das Hauptziel war):
cls; [string]$filePath = $profile; [string]$fileContents = '<unsere Standard-Einstellungen>'; if(!(Test-Path $filePath)){md -Force ([System.IO.Path]::GetDirectoryName($filePath)) | Out-Null; $fileContents | sc $filePath; Write-Host 'Datei erstellt!'; } else { Write-Warning 'Datei existiert bereits!' };
Zur besseren Lesbarkeit würde ich es stattdessen in einer .ps1-Datei machen:
cls; # Konsole leeren, um die Ergebnisse besser zu erkennen
[string]$filePath = $profile; # Als Zeichenfolge deklariert, um die Verwendung von Texten ohne Anführungszeichen zu ermöglichen und dennoch nicht fehlzuschlagen.
[string]$fileContents = '<unsere Standard-Einstellungen>'; # Anweisungen können jetzt auf einzelnen Zeilen geschrieben werden, anstatt durch Semikolons getrennt zu sein.
if(!(Test-Path $filePath)) {
New-Item -Force ([System.IO.Path]::GetDirectoryName($filePath)) | Out-Null; # Ausgabe beim Erstellen des Verzeichnisses ignorieren
$fileContents | Set-Content $filePath; # Erstellt eine neue Datei mit der Eingabe
Write-Host 'Datei erstellt!';
}
else {
Write-Warning "Datei existiert bereits! Um die Datei zu löschen, führen Sie den Befehl aus: Remove-Item $filePath";
};