PVT Tool – Technical Verification Testing Utility


PVT Tool is a lightweight app for remote verification testing and health of Windows, Unix and Linux servers.

It performs essential pre / post verification tests including DNS, Ping, RDP, OS drive, services, SMBv1 state and system uptime.

An essential app for PVT testing.

Useful situations include server patching, disaster recovery (DR), ITIL change and/or general testing.

Use Case

  • Bulk testing feature. You can PVT multiple servers collectively.
  • Remote testing. No need to login to a server.
  • Single pane of glass with a beautiful report.
  • Reduce overhead and time.
  • Increase accuracy and consistency.
  • Excel spreadsheet reporting.
  • Ensure standardisation of PVT practices.
  • Improve change management practices such as patching and DR.
  • BAU / general diagnostics.
  • Agent-less solution.


  • DNS test.
  • RDP test.
  • Ping test.
  • New SSH test.
  • New Telnet test.
  • Get Operating System version.
  • Get network interface card (NIC) info including IPv4, subnet mask, default gateway and DNS server.
  • Get OS Drive health.
  • Get SMBv1 status.
  • System up time.
  • New Get system boot time.
  • New Get system last patch time.
  • New Get system manufacturer & model info.
  • Beautiful tabular report.
  • Check running services.
  • Clipboard copy/paste to Excel.
  • Excel CSV reporting.
  • Portable app, simply download and run.




Ensure you have the following recommended requirements.

  • 2 vCPU & 2 GB Memory.
  • Windows Server 2008 R2 and up.
  • Windows 7 and up.
  • Powershell 4.0.
  • .Net framework 2.0.
  • Windows Remote Management (WinRM).
  • Domain-joined (AD) environment.


1. Download and extract the ZIP file.
2. Run “PVT Tool.exe”
3.PVT Tool will open and appear like so.
4. You can enter a computer name, FQDN or IP of a single target computer / server to perform verification testing OR click Browse to select a text file containing multiple target computers / servers.
Note: Ensure text file containing multiple targets is formatted with one computer name per line, like so.
5.PVT Tool will now begin performing verification checks on selected servers. Once complete, it will generate a report like below.
6. You can then peruse the report, filter results using the search bar at the top right.
7. If you wish, you can save the report to an Excel spreadsheet by clicking File -> Save As.
8. Finish.


  • Best practice is to run PVT Tool before and after major IT works such as a scheduled change. Any deviation in the post-report should be addressed.
    • Example: A VM has 70 running services in the pre-run report and 65 running services in the post-run report.
  • You can use either hostnames, FQDNs or IP addresses of the target systems you wish to PVT.
  • Designed to be run on domain-joined Windows Servers and Desktops.
  • Look out for results containing “FAIL” and empty fields.
  • Look out for free space in %, anything under 10% is a red flag.
  • Any computer / server with SMBv1 enabled is a security risk and should be remediated.
  • You can determine whether a target scanned server is Virtual / Physical by looking at the System Manufacturer and Model columns. If it is “VMware” or “Microsoft Hyper-V”, then that is indicative Virtual.
  • PVT now supports Unix & Linux systems by probing Telnet & SSH ports.
  • If you receive WinRM errors, ensure WinRM service is running on the target computer, that you are running PVT Tool as a privileged user who is a member of Local Administrators and confirm you are on the same domain network as the target computer.
  • For maximum accuracy, run the application within the Windows domain which contains most of your servers for PVT. Ie if you have 500x servers on the fabrikam.local domain, run the PVT Tool from a server within the fabrikam.local domain.

Upcoming features

  • N/a.


What started out as a simple PowerShell script executing Ping tests has evolved into an ambitious UI app.

PVT stands for Post Verification Testing.

Verification testing is an important part in the IT operations space, we all need it, it must be accurate and most importantly it should be easy.
These are the thoughts that went into mind when designing and building this app.

This is a side hobby of mine and there are still improvements to be made, so stay tuned!


  • Renamed utility to original intended PVT Tool.
  • 1.6.8 - 20-06-2022 - Added feature; new column Last Patch Date, which probes remote server for the last patch date.
  • 1.6.7 - 09/05/2022 - Added feature; new columns SSH Test and Telnet Test. Now supporting Unix/Linux systems!
  • Added new Test-Connection methods for performing SSH and Telnet port tests. This is to enable Non-Windows testing such as Unix, Linux and other devices.
  • Omitted "RDP Port" column and variables as this is useless info. Value is static "3389".
  • 1.6.6 Added feature, new columns System Manufacturer and System Model. This is to determine physical/virtual server.
  • Added clipboard copy/paste feature by changing runspace apartmentstate to STA. You can now select rows and perform CTRL + C if you wish to copy/paste into Excel.
  • Updated operating system information capture by replacing WMI calls with CIM.
  • Code signed compiled file.
  • Added clipboard copy/paste feature. You can now select rows and perform CTRL + C if you wish to copy/paste into Excel.
  • Updated operating system information capture by replacing WMI calls with CIM.
  • 1.6.5 Fixed system boot time values. Now performing this more efficiently by recycling existing values and invoke-commands, thus removed former overhead of non-working code.
  • Added clipboard CTRL + C feature by changing runspace apartmentstate to STA.
  • 1.6.4 Fixed about form formatting.
  • Removed 2nd form runspace.close calls as they are irrelevant.
  • 1.6.3 Fixed exit bug where runspaces would keep the process open. App now exits cleanly.
  • 1.6.2 removed surplus $script:powershell = [powershell]::Create() from line 1135.
  • 1.6.1 cosmetic update, appended About page in 2nd form.
  • Added system uptime/boot time feature.
  • 1.5.9 appended "| wait-job -timeout 11" at the end of every invoke-command job. This has fixed app delays on non-responsive target computers/servers.
  • 1.5.8 fixed unprotected memory exceptions by calling $script:powershell.EndInvoke($script:handle) at exit functions.
  • Other GUI fixes including anchoring.
  • 1.5.7 Fixed views, enabling search filter Textbox1 to appear correctly in Tab view.
  • Fixed Datagridview and tab control sizing, both horizontal and vertical scroll bars now appearing.
  • 1.5.6 Removed save file Confirm-Overwrite feature as this is crashing on Server 2012.
  • Attempting to fix missing scroll bar in tab control take 2
  • Attempting to fix missing scrollbar in data grid view.
  • 1.5.4 fixed Runspace garbage collection on completion and exit.
  • 1.5.3 Attempt to properly close runspaces following successful completion.
  • 1.5.2 Attempt to suppress Test-NetConnection progress on like 458.
  • 1.5.1 Made runspace sessions on line 954 compatible with older than PS 5.1 versions. Tested and working on PS 4.0.
  • GUI is no longer frozen!
  • App is now multi-threaded thanks to Runspace pools optimised for number of processorts available on your system.
  • Updated UI slightly.
  • Added new manual Save As feature!
  • 1.5.0 Lots of bugs and features added.
  • 1.4.0 Runspace pools are working!
  • Other minor bug fixes such as missing variables, etc.
  • Added Add-OutputBox function in runspace code.
  • Runspace is now working correctly. Next update will be the implementation of runspace pools.
  • $script:runspace is working and updating the GUI by using the Run add_click button!
  • Removed Out-Gridview and now using native GUI thanks to DataGridView!
  • 1.3.3 Updated 2nd GUI, new colour scheme, new search filter bar and new close button.
  • Optimised 2nd form sizing.
  • Added 2nd form at the end of RunAppCode function which displays a GUI containing tab control and data grid view.
  • 1.3.1 Added the use of New-Object System.Data.DataTable instead of traditional PS array.
  • Added Xmas easter egg.
  • Added progress bar, bringing the app to v1.3.0!
  • Progress bar incrementor is on line ~420.
  • Add WinRM check. Continue if running, else stop the script.
  • Fast PING in $script1.
  • Attempt to add FQDN into runspace.
  • Fixed runspace issues by add AddScript within Foreach loop.
  • A good beta version. Might make final.
  • Rounded off disk capacity numbers to 2 decimals.
  • Improved runspaces. No more Test-NetConnection GUI. Need to monitor memory performance and address any leaks in any.
  • 1.2.9a (Beta) Implementing runspaces take 1.
  • 1.2.8e Added primitive loading progress using '.' in output windows.
  • Greyed out Browse button during code execution.
  • Emptying running jobs in RunCode function, outside of foreach loop also in an attempt to hide windows.
  • Removed Start-Job brackets and appended -AsJob at the end on Invoke-Command scripts.
  • Other minor improvements including cosmetic.
  • This version of KVT Tools is memory efficient and intended to be run on older systems.
  • Fixed server input textbox watermark validation.
  • Added garbage collection function RunAppCode.
  • Fixed PowerShell requirement message and check from version 5.1 to 4.0.
  • Minor cosmetic fixes to GUI including browse box normal colourisation upon successful file load.
  • 1.2.7 Added single computer/server KVT feature using textbox.
  • Improved menu slightly, adding colour.
  • Updated icon.
  • Further tweaks with emptying variables.
  • Added SMBv1 status checks for Windows Server 2012 R2 and up.
  • Fixed memory leak in Foreach loop failing to reset variables.
  • Added version detection.
  • Added output box colourisation.
  • Added extra checks to prevent unhandled exceptions.
  • Added browse file path display in text box.
  • Made text boxes read only.
  • 1.2.0 Codesigned using Sectigo certificate.
  • Fixed serialisation of IP address details for successful CSV export.
  • Added NIC DNS server configuration feature.
  • Check RDP port logic prior performing an additional Ping test, further improving app performance.
  • Empty array following successful task completion.
  • Improved Ping function, bringing Windows Desktop OS compatibility.
  • Fixed drive free space reporting on unreachable hosts.
  • Added vCPU and memory feature.
  • Minor bug fixes. Removed Ping reply in ms as was not functioning correctly with multi-threading.
  • Resolved multi-thread processing using start-job functions to comply with GUI initiative.
  • Major GUI improvements. Added output text window. Removed Powershell native outputs.
  • Minor GUI improvements. Added Browse button.
  • Reworded success criteria to Pass/FAIL.
  • Fixed application termination on cancel exit code.
  • Added running services count to KVT.
  • Added IP Address, Default Gateway and Subnet Mask details.
  • Added C:\ Drive free percentage.
  • Added C:\ Drive disk capacity report.
  • Adjoined dual array results into single pane of glass.
  • Added major GUI feature.
  • Added Export to CSV feature to GUI, simply select and click OK.
  • 1.0.2 Output results using Out-Gridview.
  • 1.0.1 Using Foreach loops and arrays to store gathered information and present in console using Format-Table.
  • 1.0.0 - Script creation.