forked from dsccommunity/xPSDesiredStateConfiguration
-
Notifications
You must be signed in to change notification settings - Fork 0
/
xScript_WatchFileContentConfig.ps1
97 lines (82 loc) · 2.85 KB
/
xScript_WatchFileContentConfig.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<#PSScriptInfo
.VERSION 1.0.1
.GUID f9306ebe-8af5-4dee-baf3-f3fac17891db
.AUTHOR Microsoft Corporation
.COMPANYNAME Microsoft Corporation
.COPYRIGHT
.TAGS DSCConfiguration
.LICENSEURI https://github.com/dsccommunity/xPSDesiredStateConfiguration/blob/main/LICENSE
.PROJECTURI https://github.com/dsccommunity/xPSDesiredStateConfiguration
.ICONURI
.EXTERNALMODULEDEPENDENCIES
.REQUIREDSCRIPTS
.EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES First version.
.PRIVATEDATA 2016-Datacenter,2016-Datacenter-Server-Core
#>
#Requires -module 'xPSDesiredStateConfiguration'
<#
.SYNOPSIS
Configuration that make sure the file exist at the given file path with
the specified content.
.DESCRIPTION
Configuration that creates a file at the given file path with the
specified content, using the xScript resource.
If the content of the file is changed, the configuration will update
the file content to match the content in the configuration.
.PARAMETER FilePath
The path at which to create the file.
.PARAMETER FileContent
The content to set in the file.
.EXAMPLE
xScript_WatchFileContentConfig -FilePath 'C:\test.txt' -FileContent 'Just some sample text to write to the file'
Compiles a configuration that make sure the is a file 'C:\test.txt' with
the content 'Just some sample text to write to the file'.
#>
Configuration xScript_WatchFileContentConfig {
[CmdletBinding()]
param
(
[Parameter(Mandatory = $true, HelpMessage='The path at which to create the file.')]
[ValidateNotNullOrEmpty()]
[System.String]
$FilePath,
[Parameter(Mandatory = $true, HelpMessage='The content to set in the file.')]
[ValidateNotNullOrEmpty()]
[System.String]
$FileContent
)
Import-DscResource -ModuleName xPSDesiredStateConfiguration
Node localhost
{
xScript 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
}
}
}
}
}