Parsers/GPO/Files.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
#region GPO Parsers
Function Write-GPOFilesXMLData
{
    [CmdletBinding()]
    [OutputType([String])]
    param
    (
        [Parameter(Mandatory=$true)]
        [System.Xml.XmlElement]$XML    
    )

    $fileHash = @{}
    $Properties = $XML.properties

    $fileHash.SourcePath = $Properties.fromPath
    $fileHash.DestinationPath = $Properties.targetPath
    $fileHash.Ensure = switch ($Properties.action) { "D" { "Absent" } Default { "Present"} }
    $fileHash.Force = switch ($Properties.action) { "C" { $False } Default { $True } }
    if ($Properties.archive -eq 1 -or $Properties.readonly -eq 1 -or $Properties.hidden -eq 1)
    {
        $fileHash.Attributes = @()
        if ($Properties.archive -eq 1)
        {
            $fileHash.Attributes += "Archive"
        }

        if ($Properties.hidden -eq 1)
        {
            $fileHash.Attributes += "Hidden"
        }

        if ($Properties.readonly -eq 1)
        {
            $fileHash.Attributes += "ReadOnly"
        }
    }

    Write-DSCString -Resource -Name "Files(XML): $($fileHash.DestinationPath)" -Type File -Parameters $fileHash 
}
#endregion