-
Notifications
You must be signed in to change notification settings - Fork 1
/
29.Create-PolicyDefinitions.ps1
68 lines (58 loc) · 2.25 KB
/
29.Create-PolicyDefinitions.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
<#
.Synopsis
Creates the PolicyDefinitions folder in SYSVOL in order to store shared ADMX/ADML files.
.DESCRIPTION
Creates the PolicyDefinitions folder in SYSVOL in order to store shared ADMX/ADML files.
.EXAMPLE
.\Create-PolicyDefinitions -XmlFile ADStructure_Contoso.com.xml -Verbose
.NOTES
Author : Ben van Zanten
Company: Valid
Date : Dec 2015
Version: 1.0
History: 1.0 Initial version
#>
[CmdletBinding(SupportsShouldProcess=$true,
ConfirmImpact='Medium')]
Param
(
# Name of the input file, default is: ADStructure.xml
[Parameter(Mandatory=$false,Position=1,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$false,
ValueFromRemainingArguments=$false)]
[ValidateScript({Test-Path $_})]
[string]$XmlFile='.\ADStructure.xml',
# Name of the domain. For instance Contoso. If not given, the domain from the XML is used
[Parameter(Mandatory=$False,Position=2)]
[string]$DomainName
)
Begin {
Import-Module .\DeployAdLib.psd1
# Test for elevation :
if (-not(Test-AdminStatus)) {
Write-Error "Run this script elevated! This script requires administrative permissions."
break
}
$domName = Get-DomainName -XmlFile $XmlFile -DomainName $DomainName
[xml]$forXML = Get-Content $XmlFile
$domXML = $forXML.forest.domains.domain | ? { $_.name -eq $domName }
# $DomainName
}
Process
{
#
# Create the GPO Central store. (PolicyDefinitions folder in E:\SYSVOL\sysvol\<DnsDomainName>\Policies )
#
$PolDefDir = "{0}\sysvol\{1}\Policies\PolicyDefinitions" -f ( $domXML.DCs.parameters.SysvolPath,$domXML.dnsname )
if (!(Test-Path $PolDefDir)) {
Write-Verbose "Creating GPO Central store. (PolicyDefinitions folder: $PolDefDir)"
New-Item $PolDefDir -ItemType Directory
#
#.. and fill it. (/xo = do not overwrite newer files)
#
Robocopy $Env:SystemRoot\PolicyDefinitions $PolDefDir /e /xo
} else {
Write-Verbose "GPO Central store already exists. (PolicyDefinitions folder: $PolDefDir )"
}
}