Skip to content

Instantly share code, notes, and snippets.

View vMarkusK's full-sized avatar

Markus Kraus vMarkusK

View GitHub Profile
@vMarkusK
vMarkusK / Update Get-CIDatastore Threshold.ps1
Created October 24, 2018 07:56
Update Get-CIDatastore Threshold
$CiDs = Get-CIDatastore | where {$_.Name -like "LOCAL-*"} | Get-CIView
foreach ($object in $CiDs ){
$Cap = $object.TotalCapacityGb
$red = [math]::round($object.TotalCapacityGb/85, 0)
$yellow = [math]::round($object.TotalCapacityGb/75, 0)
Write-Host "Total Cap: '$cap GB'"
Write-Host "New ThresholdRedGb: '$red GB'"
Write-Host "New ThresholdYellowGb: '$yellow GB'"
$object.ThresholdRedGb = $red
@vMarkusK
vMarkusK / Find Duplicate VM IPs.ps1
Created October 24, 2018 08:07
Find Duplicate VM IPs
Function GetArrayDupes {
param($array)
$hash = @{}
$array | %{ $hash[$_] = $hash[$_] + 1 }
$result = $hash.GetEnumerator() | ?{$_.value -gt 1} | %{$_.key}
Return $result
}
$VMs = Get-VM
$IPs = $VMs.Guest.IPAddress
@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
@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 / 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 / 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 / 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 / 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"
@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,
# Parameters
$ClusterName = "win"
$DatastoreName = "scratch00"
# Get Cluster
$Cluster = Get-Cluster -Name $ClusterName
# Disable VM DRS Roles
$Cluster | Get-DrsRule | Set-DrsRule -Enabled:$false