public/Restart-UnraidVm.ps1
|
function Restart-UnraidVm { <# .SYNOPSIS Restarts a virtual machine. .PARAMETER InputObject VM to restart (accepts pipeline). .PARAMETER Name VM name. .PARAMETER Force Hard reset instead of graceful reboot. .PARAMETER Session Unraid session (defaults to current session). .EXAMPLE Restart-UnraidVm -Name "Windows10" .EXAMPLE Restart-UnraidVm -Name "Ubuntu" -Force #> [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = "ByName")] [OutputType('void')] param( [Parameter(Mandatory, ParameterSetName = "ByObject", ValueFromPipeline)] [UnraidVm[]]$InputObject, [Parameter(Mandatory, ParameterSetName = "ByName", Position = 0)] [string]$Name, [switch]$Force, [Parameter()] [UnraidSession]$Session = $script:DefaultUnraidSession ) process { $vms = Resolve-UnraidVm -InputObject $InputObject -Name $Name -ParameterSetName $PSCmdlet.ParameterSetName -Session $Session if (-not $vms) { return } foreach ($vm in $vms) { $action = if ($Force) { 'reset' } else { 'reboot' } $description = if ($Force) { "Hard Reset Virtual Machine" } else { "Reboot Virtual Machine" } Invoke-UnraidStateChange -Id $vm.Id -Name $vm.Name -Action $action -Type 'vm' -ShouldProcessAction $description -Session $Session -Cmdlet $PSCmdlet } } } |