mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-07-16 00:40:39 +00:00
52 lines
2.4 KiB
PowerShell
52 lines
2.4 KiB
PowerShell
function Invoke-WinUtilScript {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Invokes the provided scriptblock. Intended for things that can't be handled with the other functions.
|
|
|
|
.PARAMETER Name
|
|
The name of the scriptblock being invoked
|
|
|
|
.PARAMETER scriptblock
|
|
The scriptblock to be invoked
|
|
|
|
.EXAMPLE
|
|
$Scriptblock = [scriptblock]::Create({"Write-output 'Hello World'"})
|
|
Invoke-WinUtilScript -ScriptBlock $scriptblock -Name "Hello World"
|
|
|
|
#>
|
|
param (
|
|
$Name,
|
|
[scriptblock]$scriptblock
|
|
)
|
|
|
|
try {
|
|
Write-Host "Running Script for $Name"
|
|
Write-WinUtilLog -Component "Script" -Message "Running script for $Name"
|
|
Invoke-Command $scriptblock -ErrorAction Stop
|
|
Write-WinUtilLog -Component "Script" -Message "Completed script for $Name"
|
|
} catch [System.Management.Automation.CommandNotFoundException] {
|
|
Write-Warning "The specified command was not found."
|
|
Write-Warning $PSItem.Exception.message
|
|
Write-WinUtilLog -Level "ERROR" -Component "Script" -Message "Command not found while running script for $Name`: $($PSItem.Exception.Message)"
|
|
} catch [System.Management.Automation.RuntimeException] {
|
|
Write-Warning "A runtime exception occurred."
|
|
Write-Warning $PSItem.Exception.message
|
|
Write-WinUtilLog -Level "ERROR" -Component "Script" -Message "Runtime exception while running script for $Name`: $($PSItem.Exception.Message)"
|
|
} catch [System.Security.SecurityException] {
|
|
Write-Warning "A security exception occurred."
|
|
Write-Warning $PSItem.Exception.message
|
|
Write-WinUtilLog -Level "ERROR" -Component "Script" -Message "Security exception while running script for $Name`: $($PSItem.Exception.Message)"
|
|
} catch [System.UnauthorizedAccessException] {
|
|
Write-Warning "Access denied. You do not have permission to perform this operation."
|
|
Write-Warning $PSItem.Exception.message
|
|
Write-WinUtilLog -Level "ERROR" -Component "Script" -Message "Access denied while running script for $Name`: $($PSItem.Exception.Message)"
|
|
} catch {
|
|
# Generic catch block to handle any other type of exception
|
|
Write-Warning "Unable to run script for $Name due to unhandled exception."
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
Write-WinUtilLog -Level "ERROR" -Component "Script" -Message "Unhandled exception while running script for $Name`: $($psitem.Exception.Message)"
|
|
}
|
|
|
|
}
|