116 lines
3.8 KiB
PowerShell
116 lines
3.8 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Run a single on-demand VMware incremental backup
|
|
.DESCRIPTION
|
|
Run a single on-demand VMware incremental backup
|
|
.EXAMPLE
|
|
Start-ITDCohesityOnDemandVMIncremental -ComputerName itdxyz.nd.gov
|
|
.NOTES
|
|
General notes
|
|
.COMPONENT
|
|
Cohesity
|
|
.ROLE
|
|
The role this cmdlet belongs to
|
|
.FUNCTIONALITY
|
|
The functionality that best describes this cmdlet
|
|
#>
|
|
function Start-ITDCohesityOnDemandVMIncremental {
|
|
[CmdletBinding()]
|
|
Param (
|
|
|
|
[Parameter()]
|
|
$ComputerName
|
|
)
|
|
|
|
begin {
|
|
}
|
|
|
|
process {
|
|
$CohesityVMwareVM = Get-CohesityProtectionSourceObject | Where-Object Name -eq $ComputerName #| Select-Object -Unique Id, Name, Environment, ParentId
|
|
Start-CohesityProtectionJob -Id (Get-CohesityProtectionJob | Where-Object sourceIds -Match $CohesityVmwareVM.parentId) -SourceIds $CohesityVMwareVM.id
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
}
|
|
|
|
<#
|
|
.SYNOPSIS
|
|
Create a Protection Group based on VMware AppName Tag, one protection group for each VMware source.
|
|
.DESCRIPTION
|
|
Long description
|
|
.EXAMPLE
|
|
New-ITDCohesityProtectionGroup -AppName ITD-POC-zmeier
|
|
.NOTES
|
|
General notes
|
|
.COMPONENT
|
|
The component this cmdlet belongs to
|
|
.ROLE
|
|
The role this cmdlet belongs to
|
|
.FUNCTIONALITY
|
|
The functionality that best describes this cmdlet
|
|
#>
|
|
function New-ITDCohesityProtectionGroupWIP {
|
|
[CmdletBinding()]
|
|
Param (
|
|
[Parameter()]
|
|
[string[]]
|
|
$AppName,
|
|
|
|
[switch]
|
|
$NewBuildsOnly
|
|
)
|
|
|
|
begin {
|
|
}
|
|
|
|
process {
|
|
$AllProtectionSourceObject = Get-CohesityProtectionSourceObject
|
|
# create protection group based on appname, exclude placeholders
|
|
ForEach ($app in $AppName) {
|
|
$ProtectionJob = $null
|
|
|
|
$SourceObjects = $AllProtectionSourceObject | Where-Object Name -eq $app
|
|
$StartHour = Get-Random -Minimum 18 -Maximum 23
|
|
$StartDateTime = ([DateTime]::Today.AddHours($StartHour)).AddMinutes(30)
|
|
ForEach ($SourceObject in $SourceObjects) {
|
|
$Source = Get-CohesityProtectionSourceObject -Id $SourceObject.parentId
|
|
switch ($Source.environment) {
|
|
'kVMware' {
|
|
$ProtectionJobName = ($app + "@" + $Source.Name.split('.')[0])
|
|
}
|
|
'kPhysical' {
|
|
$ProtectionJobName = ($app + "@" + "physical")
|
|
}
|
|
}
|
|
|
|
$SRMTagPlaceholderObject = $AllProtectionSourceObject | Where-Object {$_.Name -eq "Placeholder" -and $_.ParentId -eq $SourceObject.parentId}
|
|
|
|
New-CohesityProtectionJob -Name $ProtectionJobName `
|
|
-PolicyName "ITD-Bronze" `
|
|
-VmTagIds $SourceObject.Id `
|
|
-ParentSourceId $SourceObject.parentId `
|
|
-ExcludeVmTagIds $SRMTagPlaceholderObject.id `
|
|
-Environment $Source.environment `
|
|
-Timezone "America/Chicago" `
|
|
-ScheduleStartTime $StartDateTime `
|
|
-StorageDomainName DefaultStorageDomain `
|
|
|
|
$indexingPolicy = [PSCustomObject]@{
|
|
disableIndexing = $false;
|
|
allowPrefixes = @('/');
|
|
denyPrefixes = @('/$Recycle.Bin', '/Windows', '/ProgramData', '/System Volume Information', '/Users/*/AppData', '/Recovery', '/usr', '/sys', '/proc', '/lib', '/grub', '/grub2', 'opt/splunk', '/splunk')
|
|
}
|
|
|
|
$ProtectionJob = Get-CohesityProtectionJob -Names $ProtectionJobName
|
|
$ProtectionJob | Add-Member -MemberType NoteProperty -Name indexingPolicy -Value $indexingPolicy
|
|
Set-CohesityProtectionJob -ProtectionJob $ProtectionJob -Confirm:$false
|
|
}
|
|
}
|
|
}
|
|
|
|
end {
|
|
|
|
}
|
|
} |