Public/Utilities/Get-JCBackup.ps1
function Get-JCBackup { [CmdletBinding(DefaultParameterSetName = 'None')] param ( [switch] $All, [switch] $Users, [switch] $SystemUsers, [switch] $Systems, [switch] $UserGroups, [switch] $SystemGroups ) begin { Write-Verbose 'Verifying JCAPI Key' if ($JCAPIKEY.length -ne 40) {Connect-JCOnline} if ($All) { $Users = $true $SystemUsers = $true $Systems = $true $UserGroups = $true $SystemGroups = $true } if ((-not $All) -and (-not $Users) -and (-not $SystemUsers) -and (-not $Systems -and (-not $UserGroups) -and (-not $SystemGroups))) { Write-Error "You must select item(s) to backup to CSV by settting paramter(s). Options include '-Users', '-SystemUsers', '-Systems','-UserGroups', '-SystemGroups', or '-All' to backup all items" -ErrorAction Stop } $Banner = @" __ / / __ __ ____ ___ ____ __ / / / / / / / __ __ \ / __ \ / /_/ / / /_/ / / / / / / / / /_/ / \____/ \____/ /_/ /_/ /_/ / ___/ /_/ ______ __ __ / ____/ / / ____ __ __ ____/ / / / / / / __ \ / / / / / __ / / /___ / / / /_/ // /_/ / / /_/ / \____/ /_/ \____/ \____/ \____/ CSV Backup "@ } process { [System.Console]::Clear(); Write-Host $Banner -ForegroundColor Green Write-Host "`n============= Backup Status ============`n" if ($Users) { Write-Host -nonewline "Backing up JumpCloud user information..." try { Get-JCUser | Select-Object * , ` @{Name = 'attributes'; Expression = {$_.attributes | ConvertTo-Json}}, ` @{Name = 'addresses'; Expression = {$_.addresses | ConvertTo-Json}}, ` @{Name = 'phonenumbers'; Expression = {$_.phonenumbers | ConvertTo-Json}}, ` @{Name = 'ssh_keys'; Expression = {$_.ssh_keys | ConvertTo-Json}} ` -ExcludeProperty attributes, addresses, phonenumbers, ssh_keys | Export-CSV -Path "JumpCloudUsers_$(Get-Date -Format MMddyyyy).CSV" -NoTypeInformation -Force Write-Host "JumpCloudUsers_$(Get-Date -Format MMddyyyy).CSV created.`n" -ForegroundColor Green } catch { Write-Host "$($_.ErrorDetails)" } } if ($SystemUsers) { Write-Host -nonewline "Backing up JumpCloud system user information..." try { Get-JCSystem | Get-JCSystemUser | Select-Object -Property * , @{Name = 'BindGroups'; Expression = {$_.BindGroups | ConvertTo-Json}} -ExcludeProperty BindGroups | Export-CSV -Path "JumpCloudSystemUsers_$(Get-Date -Format MMddyyyy).CSV" -NoTypeInformation -Force Write-Host "JumpCloudSystemUsers_$(Get-Date -Format MMddyyyy).CSV created.`n" -ForegroundColor Green } catch { Write-Host "$($_.ErrorDetails)" } } if ($Systems) { Write-Host -nonewline "Backing up JumpCloud system information..." try { Get-JCSystem | Select-Object *, ` @{Name = 'networkInterfaces'; Expression = {$_.networkInterfaces | ConvertTo-Json}}, ` @{Name = 'sshdParams'; Expression = {$_.sshdParams | ConvertTo-Json}} ` -ExcludeProperty networkInterfaces, sshdParams, connectionHistory | Export-CSV -Path "JumpCloudSystems_$(Get-Date -Format MMddyyyy).CSV" -NoTypeInformation -Force Write-Host "JumpCloudSystems_$(Get-Date -Format MMddyyyy).CSV created.`n" -ForegroundColor Green } catch { Write-Host "$($_.ErrorDetails)" } } if ($UserGroups) { Write-Host -nonewline "Backing up JumpCloud user group membership..." try { Get-JCGroup -Type User | Get-JCUserGroupMember | Export-CSV -Path "JumpCloudUserGroupMembers_$(Get-Date -Format MMddyyyy).CSV" -NoTypeInformation -Force Write-Host "JumpCloudUserGroupMembers_$(Get-Date -Format MMddyyyy).CSV created.`n" -ForegroundColor Green } catch { Write-Host "$($_.ErrorDetails)" } } if ($SystemGroups) { Write-Host -nonewline "Backing up JumpCloud system group membership..." try { Get-JCGroup -Type System | Get-JCSystemGroupMember | Export-CSV -Path "JumpCloudSystemGroupMembers_$(Get-Date -Format MMddyyyy).CSV" -NoTypeInformation -Force Write-Host "JumpCloudSystemGroupMembers_$(Get-Date -Format MMddyyyy).CSV created.`n" -ForegroundColor Green } catch { Write-Host "$($_.ErrorDetails)" } } } end { } } |