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
$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
$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