core/modules/monkeylogger/monkeylogger.psm1
Set-StrictMode -Version Latest $listofFiles = [System.IO.Directory]::EnumerateFiles(("{0}" -f $PSScriptRoot),"*.ps1","AllDirectories") $all_files = $listofFiles.Where({` ($_ -like ("*core{0}engine*" -f [System.IO.Path]::DirectorySeparatorChar)) ` -or ($_ -like ("*core{0}runspaces*" -f [System.IO.Path]::DirectorySeparatorChar)) ` -or ($_ -like ("*core{0}helpers*" -f [System.IO.Path]::DirectorySeparatorChar))}) $content = $all_files.ForEach({ [System.IO.File]::ReadAllText($_, [Text.Encoding]::UTF8) + [Environment]::NewLine }) #Set-Content -Path $tmpFile -Value $content . ([scriptblock]::Create($content)) #Load proxy functions $monkeyProxyFunctions = ("{0}/core/console" -f $PSScriptRoot) $listofFiles = [System.IO.Directory]::EnumerateFiles(("{0}" -f $monkeyProxyFunctions),"*.ps1","AllDirectories") $content = $listofFiles.ForEach({ [System.IO.File]::ReadAllText($_, [Text.Encoding]::UTF8) + [Environment]::NewLine }) #Set-Content -Path $tmpFile -Value $content . ([scriptblock]::Create($content)) Function Start-Logger{ [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseShouldProcessForStateChangingFunctions", "", Scope="Function")] [cmdletbinding()] param( [Parameter(Mandatory=$false, HelpMessage="loggers")] [Array]$loggers, [parameter(Mandatory= $false, HelpMessage= "Initial path")] [String]$InitialPath, [parameter(Mandatory= $false, HelpMessage= "Queue logger")] [System.Collections.Concurrent.BlockingCollection`1[System.Management.Automation.InformationRecord]]$LogQueue ) New-Logger @PSBoundParameters } Function Stop-Logger{ [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseShouldProcessForStateChangingFunctions", "", Scope="Function")] [cmdletbinding()] param( [Parameter(Mandatory=$false, HelpMessage="Force stop")] [Switch]$force ) #Wait messages Wait-MonkeyLogger if($null -ne (Get-Variable -Name logger -ErrorAction Ignore)){ if($logger.is_enabled){ Write-Verbose "Stopping logger" $logger.stop() } } #Clean vars if($force.IsPresent){ if($null -ne (Get-Variable -Name LogQueue -ErrorAction Ignore)){ Remove-Variable -Scope Script -Force -Name LogQueue -ErrorAction SilentlyContinue Remove-Variable -Scope Script -Force -Name MonkeyLogRunspace -ErrorAction SilentlyContinue Remove-Variable -Scope Script -Force -Name _handle -ErrorAction SilentlyContinue Remove-Variable -Scope Script -Force -Name enabled_loggers -ErrorAction SilentlyContinue Remove-Variable -Scope Script -Force -Name logger -ErrorAction SilentlyContinue Remove-Variable -Scope Script -Force -Name monkeyloggerinfoAction -ErrorAction SilentlyContinue } } } |