## Function to log activity to the configured log directory Function global:Log { } ## Function to determine if the current user context is an Administrator Function global:IsAdmin { If ( ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) ) { Return $true } Else { Return $false } } ## Runs a script from the repo Function global:Run-PSScript { param( [string]$Type='management-scripts', [string]$Name, [string]$Arguments) ## Get rid of null arguments If ( $Arguments -eq "null" ) { $Arguments = $null } ## Make sure $Name and $Type are defined If ( $Name -and $Type ) { ## Form the URL to the specified script $URL = "https://dev.emberkom.com/emberkom/${Type}/raw/branch/master/${Name}.ps1" ## Get the script Write-Output "Retrieving : ${Name}.ps1" Try { $Script = (New-Object Net.WebClient).DownloadString($URL) } Catch { Write-Output $_.Exception.Message } ## Make a script block Try { $ScriptBlock = [Scriptblock]::Create($Script) } Catch { Write-Output $_.Exception.Message } ## Run the script any any arguments Write-Output "Executing: ${Name}.ps1 ${Arguments}" Try { Invoke-Command -ScriptBlock $ScriptBlock -ArgumentList $Arguments } Catch { Write-Output $_.Exception.Message } } Else { Write-Output "No script or type was specified" } } ## Function to return a Powershell version object from a string Function Get-Version { param([string]$Version) [int]$Sets = 4 $VersionArray = $Version.Split('.') If ( $VersionArray.Count -le $Sets ) { $Sets = $VersionArray.Count } For ($i = 0; $i -le ($Sets - 1); $i++) { $Return = '{0}.{1}' -f $Return, $VersionArray[$i] } Return [version]$Return.Trim('.') }