Erstellen einer Datei mit Inhalt
Beschreibung
In diesem Beispiel wird gezeigt, wie Sie die Script
Ressource zum Erstellen einer Datei verwenden können.
Um die Script
Ressource zu verwenden, müssen Sie drei Codeblöcke angeben. GetScript, TestScript und SetScript.
In diesem Beispiel werden zwei Parameter der Benutzereingabe verwendet. FilePath legt den Pfad fest, auf dem die Datei vorhanden sein soll, und FileContent legt den Inhalt der Datei fest. Diese Werte werden in den Skriptblocks mit der using
Richtlinie verwiesen.
GetScript
$fileContent = $null
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
}
return @{
Result = $fileContent
}
Im GetScript-Skriptblock überprüft der Code, ob die von FilePath angegebene Datei vorhanden ist. Wenn dies der Fall ist, gibt der Skriptblock den aktuellen Inhalt dieser Datei für das Ergebnis zurück. Wenn dies nicht der Fehler ist, gibt der Skriptblock für das Ergebnis zurück $null
.
TestScript
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
return ($fileContent -eq $using:FileContent)
} else {
return $false
}
Im TestScript-Skriptblock überprüft der Code, ob die von FilePath angegebene Datei vorhanden ist. Wenn dies nicht der Fehler ist, gibt der Skriptblock zurück $false
. Wenn es vorhanden ist, vergleicht der Code den aktuellen Inhalt der Datei mit dem von FileContent angegebenen Inhalt. Wenn der Inhalt übereinstimmen, gibt der Skriptblock zurück $true
. Wenn sie nicht sind, gibt der Skriptblock zurück $false
.
SetScript
$streamWriter = New-Object -TypeName 'System.IO.StreamWriter' -ArgumentList @(
$using:FilePath
)
$streamWriter.WriteLine($using:FileContent)
$streamWriter.Close()
Im SetScript-Skriptblock erstellt der Code ein System.IO.StreamWriter-Objekt , um in die von FilePath angegebene Datei zu schreiben. Es schreibt den von FileContent angegebenen Inhalt und schließt dann das StreamWriter-Objekt .
Mit Invoke-DscResource
Dieses Skript zeigt, wie Sie die Script
Ressource mit dem Invoke-DscResource
Cmdlet verwenden können, um sicherzustellen, dass eine Datei mit bestimmten Inhalten vorhanden ist.
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$FilePath,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$FileContent
)
begin {
$SharedParameters = @{
Name = 'Script'
ModuleName = 'PSDscResource'
Properties = @{
SetScript = {
$streamWriter = New-Object -TypeName 'System.IO.StreamWriter' -ArgumentList @(
$using:FilePath
)
$streamWriter.WriteLine($using:FileContent)
$streamWriter.Close()
}
TestScript = {
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
return ($fileContent -eq $using:FileContent)
} else {
return $false
}
}
GetScript = {
$fileContent = $null
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
}
return @{
Result = $fileContent
}
}
}
}
}
process {
$TestResult = Invoke-DscResource -Method Test @SharedParameters
if ($TestResult.InDesiredState) {
Invoke-DscResource -Method Get @SharedParameters
} else {
Invoke-DscResource -Method Set @SharedParameters
}
}
Mit einer Konfiguration
In diesem Codeausschnitt wird gezeigt, wie Sie einen Configuration
Script
Ressourcenblock definieren können, um sicherzustellen, dass eine Datei mit bestimmten Inhalten vorhanden ist.
Configuration ScriptExample {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$FilePath,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$FileContent
)
Import-DscResource -ModuleName 'PSDscResources'
Node localhost {
Script ScriptExample {
SetScript = {
$streamWriter = New-Object -TypeName 'System.IO.StreamWriter' -ArgumentList @(
$using:FilePath
)
$streamWriter.WriteLine($using:FileContent)
$streamWriter.Close()
}
TestScript = {
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
return ($fileContent -eq $using:FileContent)
} else {
return $false
}
}
GetScript = {
$fileContent = $null
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
}
return @{
Result = $fileContent
}
}
}
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für