Files
Backup/_NDGOV_CS/ITD.Cohesity/archive/powershell/ITD.Cohesity.psm1
T
Zack Meier 1d304511b8 update
2026-04-15 15:45:50 -05:00

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 {
}
}