library/xPSDesiredStateConfiguration/9.2.0/DSCResources/DSC_xScriptResource/en-US/about_xScript.help.txt

.NAME
    xScript
 
.DESCRIPTION
    Provides a mechanism to run PowerShell script blocks on a target node.
    This resource works on Nano Server.
 
.PARAMETER GetScript
    Key - String
    A string that can be used to create a PowerShell script block that retrieves the current state of the resource. This script block runs when the Get-DscConfiguration cmdlet is called. This script block should return a hash table containing one key named Result with a string value.
 
.PARAMETER SetScript
    Key - String
    A string that can be used to create a PowerShell script block that sets the resource to the desired state. This script block runs conditionally when the Start-DscConfiguration cmdlet is called. The TestScript script block will run first. If the TestScript block returns False, this script block will run. If the TestScript block returns True, this script block will not run. This script block should not return.
 
.PARAMETER TestScript
    Key - String
    A string that can be used to create a PowerShell script block that validates whether or not the resource is in the desired state. This script block runs when the Start-DscConfiguration cmdlet is called or when the Test-DscConfiguration cmdlet is called. This script block should return a boolean with True meaning that the resource is in the desired state and False meaning that the resource is not in the desired state.
 
.PARAMETER Credential
    Write - Instance
    The credential of the user account to run the script under if needed.
 
.PARAMETER Result
    Read - String
    The result from the GetScript script block.
 
.EXAMPLE 1
 
 
#Requires -Module xPSDesiredStateConfiguration
 
<#
    .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_WatchFileContent_Config -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_WatchFileContent_Config {
    [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
                }
            }
        }
    }
}