User Tools

Site Tools


program_lang:powershell_scripts

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
program_lang:powershell_scripts [2021/12/09 21:07]
manu
program_lang:powershell_scripts [2022/04/07 17:45] (current)
manu
Line 5: Line 5:
 [[program_lang:​powershell_scripts:​add_disk_vm|Add a disk to a VM]] [[program_lang:​powershell_scripts:​add_disk_vm|Add a disk to a VM]]
  
-Add-DiskToVm.ps1 -vMName reg-belairi81 -vCenter virtualfrogvc.virtual.frog -diskGB 10</​code>​ +[[program_lang:powershell_find_orphan_vmdk|VMware find orphan vmdk]]
-  +
-This will attach a 10 GB disk to the VM on the last of its scsi controllers +
-.EXAMPLE +
-PS&gt; Add-DiskToVm.ps1 -vCenter virtualfrogvc.virtual.frog -vMName reg-belairi81 -diskGB 10 -addController:​$true -controllerType paravirtual +
-  +
-This will attach a 10 GB disk to the VM and attach it to a new scsi controller of type paravirtual +
-.EXAMPLE +
-PS&gt; Add-DiskToVm.ps1 -vCenter virtualfrogvc.virtual.frog -vMName reg-belairi81 -diskGB 10 -controllerNumber 2 +
-  +
-This will attach a 10 GB disk to the VM and attach it to the second controller on the VM +
-#&gt; +
-  +
-##################################################################################​ +
-# Script: Add-DiskToVm.ps1 +
-# Datum: 04.10.2017 +
-# Author: Bechtle Steffen Schweiz AG (c) 2017 +
-# Version: 1.0 +
-# History: Check VMs current set of SCSI Controllers when adding Disks +
-##################################################################################​ +
-  +
-[CmdletBinding(SupportsShouldProcess=$true)] +
-Param( +
-[parameter()] +
-[string]$vCenter = "​virtualfrogvc.virtual.frog",​ +
-# Change to default VM for testing +
-[string]$vMName = "​reg-belairi82",​ +
-# Change default Disk Size +
-[decimal]$diskGB = 2.5, +
-# Hardcode the SCSI Controller # (like 3 for the third controller) +
-[int]$controllerNumber = 2000, +
-# Add new SCSI Controller while you're at it +
-[boolean]$addController = $false, +
-# Type of SCSI Controller to add (paravirtual|VirtualLsiLogicSAS) +
-[string]$controllerType = "​paravirtual"​ +
-  +
-+
-function get-scsiCount ($vm) +
-+
-try { +
-return ($vm | get-scsicontroller -ErrorAction Stop).count +
-+
-catch { +
-Write-Host "Could not count Scsi Controller of $vm" +
-exit +
-+
-+
-  +
-function get-scsiID ($vm, $number) +
-+
-try { +
-return ($vm |get-scsicontroller |select -skip ($number-1) -first 1).ID +
-+
-catch { +
-Write-Host "Could not get scsi controller number $number from $vm" +
-exit +
-+
-+
-  +
-function get-scsiType ($vm, $id) +
-+
-try { +
-return ($vm |get-scsicontroller -ID $id -ErrorAction Stop).Type +
-+
-catch { +
-Write-Host "Could not determine type of SCSI Controller on vm ($vm)"​ +
-exit +
-+
-+
-  +
-function add-DiskToVmOnController ($vm, $controller) +
-+
-try { +
-New-Harddisk -Controller $controller -CapacityGB $diskGB -VM $vm -Whatif -ErrorAction Stop +
-} catch { +
-Write-Host "Could not add disk to VM ($vm)"​ +
-exit +
-+
-+
-  +
-function shutDownVm ($vm) +
-+
-try { +
-Stop-VMGuest -VM $vm -confirm:$false -ErrorAction Stop +
-Write-Host "​Successfully send the shutdown command over VMware Tools"​ +
-+
-catch { +
-Write-Host -Foregroundcolor:​red "The VM did not respond to a VMware tools shutdown command"​ +
-$switch = Read-Host -Prompt "Would you like to Power off the VM $vm ? (yes/​no)"​ +
-if ($switch -match "​yes"​) { +
-Stop-VM -VM $vm -confirm:​$false +
-} else { +
-Write-Host "You chose not to power off the VM. Stopping the script.."​ +
-exit +
-+
-+
-  +
-while ((get-vm $vMName).PowerState -notmatch "​PoweredOff"​) +
-+
-Write-Host "​Waiting for $vm to shut down..."​ +
-sleep -s 5 +
-+
-$vmHasShutDown = $true +
-+
-  +
-####### Main Program ###### +
-try { +
-Import-Module -Name VMware.VimAutomation.Core -ErrorAction Stop Out-Null +
-} catch { +
-Write-Host "Could not add VMware ​PowerCLI Modules"​ +
-exit +
-+
-  +
-try { +
-Connect-VIServer $vCenter -WarningAction SilentlyContinue -ErrorAction Stop | Out-Null +
-+
-catch { +
-Write-Host "Could not connect to vCenter $vCenter"​ +
-exit +
-+
-  +
-Write-Host "​Connected to $vCenter. Starting script"​ +
-  +
-try { +
-$vm = Get-VM $vMName -ErrorAction Stop +
-} catch { +
-Write-Host "Could not find VM with Name $vMName in vCenter $vCenter"​ +
-exit +
-+
-if ($addController) { +
-if ($vm.PowerState -match "​PoweredOn"​) { +
-Write-Host -Foregroundcolor:​red "The VM is still powered On." +
-$switch = Read-Host -Prompt "Would you like to shut down the VM ($vm)? (yes/​no)"​ +
-if ($switch -match "​yes"​) { +
-shutDownVm $vm +
-  +
-} else { +
-Write-Host "You chose not to shutdown the VM ($vm). Stopping the script now" +
-exit +
-+
-+
-try { +
-$vm |New-Harddisk -CapacityGB $diskGB |new-scsicontroller -type $controllerType -ErrorAction Stop +
-if ($vmHasShutDown) { +
-$switch = Read-Host -Prompt "The VM was shut down for this operation. Power it back on? (yes/​no)"​ +
-if ($switch -match "​yes"​) { +
-Start-VM $vm -confirm:​$false +
-+
-+
-} catch { +
-Write-Host "could not add scsi controller with new disk to $vm" +
-exit +
-+
-} elseif ($controllerNumber -ne 2000) { +
-$numberOfControllers = get-scsiCount $vm +
-if ($numberOfControllers -gt $controllerNumber) { +
-Write-Host "You specified controller number $controllerNumber but the VM ($vm) only has $numberOfControllers controllers"​ +
-exit +
-} else { +
-$scsiID = get-scsiID $vm $controllerNumber +
-Write-Host "The VM ($vm) has $numberOfControllers SCSI Controller(s) attached. You chose to attach a new disk to the $controllerNumber. adapter"​ +
-  +
-Write-Host "The VM ($vm) has a "​(get-scsiType $vm $scsiID)"​ Controller for the number you provided"​ +
-add-DiskToVmOnController $vm ($vm | get-scsicontroller -ID $scsiID) +
-Write-Host "Added a disk of $diskGB GB to $vm on controller "($vm | get-scsicontroller -ID $scsiID).Name +
-+
-+
-else { +
-$numberOfControllers = get-scsiCount $vm +
-$scsiID = get-scsiID $vm $numberOfControllers +
-Write-Host "The VM ($vm) has $numberOfControllers SCSI Controller(s) attached"​ +
-  +
-Write-Host "The VM ($vm) has a "​(get-scsiType $vm $scsiID)"​ Controller as the last one" +
-add-DiskToVmOnController $vm ($vm | get-scsicontroller -ID $scsiID) +
-Write-Host "Added a disk of $diskGB GB to $vm on controller "($vm | get-scsicontroller -ID $scsiID).Name +
-}+
  
 +[[program_lang:​powershell_print_vminfo|VMware print VMinfo]]
  
program_lang/powershell_scripts.1639080447.txt.gz · Last modified: 2021/12/09 21:07 by manu