-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathExport-RegTree.ps1
62 lines (54 loc) · 2.51 KB
/
Export-RegTree.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
########################################################################################
# functions
########################################################################################
function Export-RegTree([string]$regkey,[string]$exportpath){
$data1 = @()
$createobject = {
param($k,$n)
[pscustomobject] @{
Name = @{$true='(Default)';$false=$n}[$n -eq '']
Value = $k.GetValue($n)
Path = $k.PSPath
Type = $k.GetValueKind($n)
}
}
get-item $regkey -PipelineVariable key| %{
$key.GetValueNames() | %{$data1 += . $createobject $key $_}
}
gci $regkey -Recurse -Force -PipelineVariable key | %{
$key.GetValueNames() | %{$data1 += . $createobject $key $_}
}
$data1
}
function Import-RegTree([string][ValidateScript({Test-Path $_})]$xmlfile){
Import-Clixml $xmlfile | %{
if (!(Test-Path $_.Path)){md $_.Path -Force | out-null}
New-ItemProperty -Path $_.Path -Name $_.Name -Value $_.Value -PropertyType $_.Type -Force
}
}
########################################################################################
# Export and join V1
########################################################################################
$a = Export-RegTree 'HKCU:\Software\Microsoft\Office\Outlook'
$b = Export-RegTree 'HKCU:\Software\Microsoft\Office\16.0\Wef\Providers'
$c = Export-RegTree 'HKCU:\Software\Microsoft\Office\16.0\Outlook'
$d = $a + $b + $c
$d | Export-Clixml "c:\users\$env:username\Regbackup-Outlook-16-Combi.xml" -Force
########################################################################################
# Export and join V2
########################################################################################
$combi5 = @{
OfficeOutlook = (Export-RegTree 'HKCU:\Software\Microsoft\Office\Outlook') ;
WefProviders = (Export-RegTree 'HKCU:\Software\Microsoft\Office\16.0\Wef\Providers') ;
Outlook160 = (Export-RegTree 'HKCU:\Software\Microsoft\Office\16.0\Outlook')
}
$combi5 | Export-Clixml "c:\users\$env:username\Regbackup-Outlook-16-Combi-array.xml" -Force
#clear
#$combi5.Outlook160
#$combi5.WefProviders
#$combi5.OfficeOutlook
########################################################################################
## Import would look like this
########################################################################################
# Import-RegTree "c:\users\$env:username\Regbackup-Outlook-16-Combi.xml"
# Import-RegTree "c:\users\$env:username\Regbackup-Outlook-16-Combi-array.xml"