-
Notifications
You must be signed in to change notification settings - Fork 52
/
Export-ScheduledTask.ps1
69 lines (58 loc) · 2.1 KB
/
Export-ScheduledTask.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
function Export-ScheduledTasks {
<#
.SYNOPSIS
Exportuje scheduled tasky ve formě XML souborů.
.DESCRIPTION
Ve výchozím nastavení exportuje tasky z rootu do adresáře C:\temp\backup.
.PARAMETER Computername
Stroje ze kterých se budou zálohovat scheduled tasky.
.PARAMETER TaskPath
Cesta ze které se budou exportovat tasky. Výchozí hodnota je "\" tedy root. Zapisovat ve tvaru "\Správa" "\Microsoft\Windows" atp.
.PARAMETER BackupPath
Kam se budou XML ukládat.
.EXAMPLE
Export-ScheduledTasks
Vyexportuje tasky z rootu do adresáře C:\temp\backup
.EXAMPLE
Export-ScheduledTasks -comp sirene01 -taskPath "\Správa"
Vyexportuje tasky z "\Správa" do adresáře C:\temp\backup na stroji sirene01
.NOTES
Author: Ondřej Šebela - [email protected]
.LINK
about_functions_advanced
.LINK
about_comment_based_help
#>
[CmdletBinding()]
param
(
[Parameter(Position = 0, Mandatory = $false, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
[ValidateNotNullOrEmpty()]
$Computername = $env:COMPUTERNAME
,
[Parameter(Position = 1)]
[ValidateNotNull()]
[ValidatePattern('(?# Cesta musí začít znakem \)^\\')] # kontrola ze zacina lomitkem
$TaskPath = "\"
,
[Parameter(Position = 2)]
[ValidateNotNull()]
[ValidateScript( {Test-Path $_})] # kontrola jestli cesta existuje
# [ValidateScript({$_ -match "^\\\\\w+\\\w+"})] # kontrola jestli jde o UNC cestu
$BackupPath = "C:\temp\backup"
)
PROCESS {
ForEach ($Computer in $Computername) {
if (!(Test-Path $BackupPath )) { New-Item -type directory "$BackupPath" }
$sch = New-Object -ComObject("Schedule.Service")
$sch.Connect("$Computer")
$tasks = $sch.GetFolder("$TaskPath").GetTasks(0)
$tasks | % {
$xml = $_.Xml
$task_name = $_.Name
$outfile = "$BackupPath\{0}.xml" -f $task_name
$xml | Out-File $outfile
}
}
}
}