Skip to main content

Sysinternals

The Sysinternals web site was created in 1996 by Mark Russinovich to host his advanced system utilities and technical information. Whether you’re an IT Pro or a developer, you’ll find Sysinternals utilities to help you manage, troubleshoot and diagnose your Windows and Linux systems and applications.

Sysinternals Suite

The whole suite in one download, or via PowerShell below.

$URL = "https://download.sysinternals.com/files/SysinternalsSuite.zip"
$OutFile = "C:\Scripts\Sysinternals\SysinternalsSuite.zip"
$OutPath = Split-Path -Path $OutFile

if (-not (Test-Path -Path $OutPath)) {
        New-Item -Path $OutPath -ItemType Directory
        Write-Output "Target folder $($OutPath) has been created."
}

Invoke-WebRequest -URI $URL -OutFile $OutFile
Expand-Archive -Path $OutFile -DestinationPath $OutPath

PsTools Suite

The whole PSTools suite in one download, or via PowerShell below.

$URL = "https://download.sysinternals.com/files/PSTools.zip"
$OutFile = "C:\Scripts\Sysinternals\PSTools.zip"
$OutPath = Split-Path -Path $OutFile

if (-not (Test-Path -Path $OutPath)) {
        New-Item -Path $OutPath -ItemType Directory
        Write-Output "Target folder $($OutPath) has been created."
}

Invoke-WebRequest -URI $URL -OutFile $OutFile
Expand-Archive -Path $OutFile -DestinationPath $OutPath

Curated list

These are the ones that I use the most.

$DownloadPath = "C:\Scripts"
$SysinternalsFiles = @(
	"procexp.chm",
	"procexp.exe",
	"procexp64.exe",
	"procmon.exe",
	"psexec.exe",
	"pslist.exe",
	"psservice.exe",
	"tcpview.chm",
    "tcpview.exe",
    "tcpview64.exe"
)

if (-not (Test-Path -Path $DownloadPath)) {
    New-Item -Path $DownloadPath -ItemType Directory
    Write-Output "Target folder $($DownloadPath) has been created."
}

foreach ($AppFile in $SysinternalsFiles) {
	Write-Output "$($AppFile)"
    $outputFile = "$($DownloadPath)\$($AppFile)"
    $URL = "https://live.sysinternals.com/$AppFile"
    if (Test-Path -Path $outputFile) {
        Remove-Item $outputFile
        Write-Output "   - deleted existing"
    }
    Write-Output "   - downloading"
    Invoke-WebRequest -URI $URL -OutFile $outputFile
    Write-Output "   - done"
}

-end