PembrokePSutilities.psm1
Write-Verbose 'Importing from [C:\projects\pembrokepsutilities\PembrokePSutilities\private]' Write-Verbose 'Importing from [C:\projects\pembrokepsutilities\PembrokePSutilities\public]' # .\PembrokePSutilities\public\Get-LocalPropertySet.ps1 function Get-LocalPropertySet { <# .DESCRIPTION This function will gather Key value pairs from a properties file. .PARAMETER PropertyFilePath A path is Required. .PARAMETER LOG_FILE A LOG_FILE is optional. .EXAMPLE Get-LocalPropertySet -PropertyFilePath c:\pps\qman\pembrokeps.properties .NOTES This file is generated during the deployment or Registration of tha Pembroke PS component. #> [CmdletBinding()] [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseDeclaredVarsMoreThanAssignments", "")] [OutputType([System.Object[]])] param( [Parameter(Mandatory=$true)][string]$PropertyFilePath, [string]$LOG_FILE = "C:\temp\nolog.log" ) if (Test-Path -Path $PropertyFilePath) { try { Write-LogLevel -Message "Gathering Local Properties" -Logfile "$LOG_FILE" -RunLogLevel CONSOLEONLY -MsgLevel CONSOLEONLY $PpsPropertiesHash = ConvertFrom-StringData (Get-Content $PropertyFilePath -raw) $PpsProperties = @() $PpsPropertiesHash | ForEach-Object { $result = New-Object psobject; foreach ($key in $_.keys) { $result | Add-Member -MemberType NoteProperty -Name $key -Value $_[$key] } $PpsProperties += $result; } } catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName Throw "Get-LocalPropertySet: $ErrorMessage $FailedItem" } $PpsProperties } else { Throw "Get-LocalPropertySet: Property File path: $PropertyFilePath does not exist." } } # .\PembrokePSutilities\public\Get-PpsProcessStatus.ps1 function Get-PpsProcessStatus { <# .DESCRIPTION This function will gather Key value pairs from a properties file. .PARAMETER ProcessName A path is Required. .EXAMPLE Get-PpsProcessStatus -ProcessName WmanKicker .NOTES This file will return true or false #> [CmdletBinding()] [OutputType([Boolean])] param( [Parameter(Mandatory=$true)][string]$ProcessName ) try { $ReturnData = Get-Process | Where-Object {($_.Name -eq "powershell") -and ($_.MainWindowTitle -like "*$ProcessName*")} $ReturnDataCount = ($ReturnData | Measure-Object).count If($ReturnDataCount -eq 1) { return $true } else { return $false } } catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName Throw "Get-PpsProcessStatus: $ErrorMessage $FailedItem" } } # .\PembrokePSutilities\public\Invoke-InstallRequiredModuleSet.ps1 function Invoke-InstallRequiredModuleSet { <# .DESCRIPTION This function will Install additional Modules for a PembrokePS component. .PARAMETER RequiredModuleSet A RequiredModuleSet is Required. .EXAMPLE Invoke-InstallRequiredModuleSet -RequiredModuleSet "Powerlumber,PembrokePSrest" .NOTES This will Install additional Modules for a Workflow_Manager. #> [CmdletBinding()] [OutputType([Boolean])] param( [Parameter(Mandatory=$true)][string]$RequiredModuleSet ) try { Write-Output "Checking for installation of required modules." $RequiredModuleList = $RequiredModuleSet.split(",") foreach ($RequiredModule in $RequiredModuleList){ $localModuledataCount = (Get-Module -ListAvailable $RequiredModule | Measure-Object).count if($localModuledataCount -ge 1){ Write-Output "Module: $RequiredModule is installed on this device." } else { Write-Output "Installing Required Module: $RequiredModule" Install-Module -Name $RequiredModule -Force } } } catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName Throw "Invoke-InstallRequiredModuleSet: $ErrorMessage $FailedItem" } } # .\PembrokePSutilities\public\Invoke-Wait.ps1 function Invoke-Wait { <# .DESCRIPTION This function will pause for the specified amount of time. .PARAMETER Seconds A valid integer is optional. Default is 10 seconds .EXAMPLE Invoke-Wait -Seconds 15 .NOTES It's pretty simple. #> [CmdletBinding()] [OutputType([boolean])] param( [Int]$Seconds = 10 ) try { Write-LogLevel -Message "Waiting $Seconds, Seconds" -Logfile "$LOG_FILE" -RunLogLevel CONSOLEONLY -MsgLevel CONSOLEONLY start-sleep -s $Seconds } catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName Throw "Invoke-Wait: $ErrorMessage $FailedItem" } } Write-Verbose 'Importing from [C:\projects\pembrokepsutilities\PembrokePSutilities\classes]' |