Skip to content

Instantly share code, notes, and snippets.

View vMarkusK's full-sized avatar

Markus Kraus vMarkusK

View GitHub Profile
@vMarkusK
vMarkusK / PRTG-VeeamBRStats.ps1
Last active December 12, 2019 01:33
Reports Veeam B&R Statistics via PowerShell for PRTG
<#
.SYNOPSIS
PRTG Veeam Advanced Sensor
.DESCRIPTION
Advanced Sensor will Report Statistics about Backups during last 24 Hours and Actual Repository usage.
.EXAMPLE
PRTG-VeeamBRStats.ps1 -BRHost veeam01.lan.local
@vMarkusK
vMarkusK / Start-ClusterPatch.ps1
Created December 11, 2019 14:53
Site Aware Patching with VMware Update Manager
function Start-ClusterPatch {
[CmdletBinding()]
param(
[Parameter(Mandatory=$True, ValueFromPipeline=$True, HelpMessage="vSphere Cluster to Patch")]
[ValidateNotNullorEmpty()]
[VMware.VimAutomation.ViCore.Impl.V1.Inventory.ComputeResourceImpl] $Cluster,
[Parameter(Mandatory=$True, ValueFromPipeline=$false, HelpMessage="Site to Process")]
[ValidateNotNullorEmpty()]
[ValidateSet("DC1","DC2")]
[String] $SiteToProcess,
@vMarkusK
vMarkusK / VeeamvCloudAutoCreateJob.ps1
Last active August 11, 2019 20:44
Veeam vCloud Auto Create Job
Param (
[Parameter(Mandatory=$True, ValueFromPipeline=$False, HelpMessage="Veeam BR Credentials")]
[ValidateNotNullorEmpty()]
[PSCredential]$VeeamCred,
[Parameter(Mandatory=$True, ValueFromPipeline=$False, HelpMessage="Veeam BR Server")]
[ValidateNotNullorEmpty()]
[String]$VeeamVBRServer,
[Parameter(Mandatory=$True, ValueFromPipeline=$False, HelpMessage="Veeam Backup Job Scale-Out Repository Name")]
[ValidateNotNullorEmpty()]
[ValidateSet("SOR_03","SOR_06")]
@vMarkusK
vMarkusK / StoreOnce-Report.ps1
Last active June 4, 2019 22:29
Reports StoreOnce Catalyst Stores via RESTapi
# Workaround for SelfSigned Cert
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
@vMarkusK
vMarkusK / Get-VamiHeatlth.ps1
Created April 11, 2019 13:11
vCenter VAMI Health for Influx API
# External References
## https://github.com/rumart/vSpherePerfData/blob/master/vcsa/appliance_health.ps1
# Config
$vCenter = "<vCenter FQDN>"
$Metrics = "applmgmt","database-storage","load","mem","software-packages","storage","swap","system"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Create Credentials
#$Credentials = Get-Credential -Message "Vami Crendetials"
function New-VeeamTenant {
<#
.SYNOPSIS
Creates a vCloud Tenant Configuguration for Veeam Backuo & Replication
.DESCRIPTION
Creates a vCloud tenent Configuration for Veeam Backup & Replication.
The Function leverages the Veeam Ent. Manager API. The Backup Jobs need to be created seperate
@vMarkusK
vMarkusK / EsxiHostConfig.ps1
Created January 15, 2019 13:42
VMware ESXi Base Config
function Set-MyESXiOption {
[CmdletBinding()]
param(
[Parameter(Mandatory=$True, ValueFromPipeline=$False, Position=0)]
[String] $Name,
[Parameter(Mandatory=$False, ValueFromPipeline=$False, Position=1)]
[String] $Value
)
process {
$myESXiOption = Get-AdvancedSetting -Entity $VMhost -Name $Name
@vMarkusK
vMarkusK / EsxiHostHardening.ps1
Created January 15, 2019 13:39
VMware ESXi Host Base Hardening
foreach ($VMhost in (Get-VMHost))
{
#Stop SSH Service
$ServiceList = Get-VMHostService -VMhost $VMhost
$SSHservice = $ServiceList | Where-Object {$_.Key -eq "TSM-SSH"}
If ($SSHservice.Running -eq $true) {Stop-VMHostService -HostService $SSHService -Confirm:$false}
else {Write-Output "SSH Server on host $VMhost is Stopped"}
$Shellservice = $ServiceList | Where-Object {$_.Key -eq "TSM"}
If ($Shellservice.Running -eq $true) {Stop-VMHostService -HostService $Shellservice -Confirm:$false}
else {Write-Output "Shell Server on host $VMhost is Stopped"}
@vMarkusK
vMarkusK / PowerShell Password Complexity Requirements.ps1
Created January 15, 2019 13:20
PowerShell Password complexity requirements
$Credential = Get-Credential
$Password = $Credential.GetNetworkCredential().Password
if(($Password -cmatch '[a-z]') -and ($Password -cmatch '[A-Z]') -and ($Password -match '\d') -and ($Password.length -ge 12) -and $Password -match '!|@|#|%|^|&|$|_') {
Remove-Variable Password
Write-Output "Password is valid"
}
else {
Remove-Variable Password
$Valid = $false
Throw "Invalid Password!
@vMarkusK
vMarkusK / Backup-VCSAToFile.ps1
Created November 5, 2018 15:55
Create a VCSA Backup via BackupAPI. Used as a Veeam Pre or Post Script
Start-Transcript -Path "C:\Scripts\Logs\Backup-$((Get-Date).ToString('yyyy-MM-dd-hh-mm')).log"
#region: Log Rotate
$LogPath = "C:\Scripts\Logs\*"
$LogFiles = "*.log"
[int] $LogRetention = "-14" # in Days
Get-ChildItem $LogPath -Include $LogFiles -Recurse | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays($LogRetention)} | Remove-Item
#endregion
#region: Import Module