Créez un fichier avec du contenu
Description
Cet exemple montre comment utiliser la Script
ressource pour créer un fichier.
Pour utiliser la Script
ressource, vous devez spécifier trois blocs de code. GetScript, TestScript et SetScript.
Cet exemple utilise deux paramètres d’entrée utilisateur. FilePath définit le chemin d’accès auquel le fichier doit exister et FileContent définit le contenu du fichier. Ces valeurs sont référencées dans les blocs de script avec la using
directive.
GetScript
$fileContent = $null
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
}
return @{
Result = $fileContent
}
Dans le scriptblock GetScript , le code vérifie si le fichier spécifié par FilePath existe. Si c’est le cas, le scriptblock retourne le contenu actuel de ce fichier pour le résultat. Si ce n’est pas le cas, le scriptblock retourne $null
le résultat.
TestScript
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
return ($fileContent -eq $using:FileContent)
} else {
return $false
}
Dans le scriptblock TestScript , le code vérifie si le fichier spécifié par FilePath existe. Si ce n’est pas le cas, le scriptblock retourne $false
. S’il existe, le code compare le contenu actuel du fichier au contenu spécifié par FileContent. Si le contenu correspond, le scriptblock retourne $true
. Si ce n’est pas le cas, le scriptblock retourne $false
.
SetScript
$streamWriter = New-Object -TypeName 'System.IO.StreamWriter' -ArgumentList @(
$using:FilePath
)
$streamWriter.WriteLine($using:FileContent)
$streamWriter.Close()
Dans setScript scriptblock, le code crée un objet System.IO.StreamWriter à écrire dans le fichier spécifié par FilePath. Il écrit le contenu spécifié par FileContent , puis ferme l’objet StreamWriter .
Avec Invoke-DscResource
Ce script montre comment utiliser la Script
ressource avec l’applet Invoke-DscResource
de commande pour vous assurer qu’un fichier existe avec du contenu spécifique.
[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
}
}
Avec une configuration
Cet extrait de code montre comment définir un Configuration
bloc Script
de ressources pour vous assurer qu’un fichier existe avec un contenu spécifique.
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
}
}
}
}
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour