|
| 1 | +#requires -version 2.0 |
| 2 | + |
| 3 | +# Wintellect .NET Debugging Code |
| 4 | +# (c) 2008 - 2009 by John Robbins\Wintellect - Do whatever you want to do with |
| 5 | +# it as long as you give credit. |
| 6 | + |
| 7 | +<#.SYNOPSIS |
| 8 | +Gets all the wonderful Sysinternals tools |
| 9 | +.DESCRIPTION |
| 10 | +Downloads and extracts the Sysinternal tools to the directory you specify. This |
| 11 | +script requires the excellent (and free) 7Z.EXE in the path to extract the |
| 12 | +.ZIP file. You can get 7z at http://www.7-zip.org. |
| 13 | +.PARAMETER Extract |
| 14 | +The directory where you want to extract the Sysinternal tools. |
| 15 | +.PARAMETER Save |
| 16 | +The default is to download the SysinternalsSuite.zip file and remove it after |
| 17 | +extracting the contents. If you want to keep the file, specify the save |
| 18 | +directory with this parameter. |
| 19 | +#> |
| 20 | + |
| 21 | +param ( [string] $Extract = $(throw 'The extract directory is required' ) , |
| 22 | + [string] $Save ) |
| 23 | + |
| 24 | +function CreateDirectoryIfNeeded ( [string] $directory ) |
| 25 | +{ |
| 26 | + if ( ! ( Test-Path $directory -type "Container" ) ) |
| 27 | + { |
| 28 | + New-Item -type directory -Path $directory > $null |
| 29 | + } |
| 30 | +} |
| 31 | + |
| 32 | +################################################################## |
| 33 | +# Main execution starts here. |
| 34 | + |
| 35 | +$paramLog = @" |
| 36 | +Param Extract = $Extract |
| 37 | +Param Save = $Save |
| 38 | +"@ |
| 39 | +Write-Debug $paramLog |
| 40 | + |
| 41 | +[string]$sevenZName = "7Z.EXE" |
| 42 | +# Verify I can find UNZIP.EXE in the path. |
| 43 | +[string]$sevenZPath = $(Get-Command $sevenZName).Definition |
| 44 | +if ( $sevenZPath.Length -eq 0 ) |
| 45 | +{ |
| 46 | + Write-Error "Unable to find $sevenZName in the path." |
| 47 | + exit |
| 48 | +} |
| 49 | + |
| 50 | +# If the extract directory does not exist, create it. |
| 51 | +CreateDirectoryIfNeeded ( $Extract ) |
| 52 | +# If there's a save directory set, us that otherwise, use the %TEMP% directory. |
| 53 | +[Boolean]$deleteZipFile = $TRUE |
| 54 | +[String]$downloadFile = "" |
| 55 | +if ( $Save.Length -gt 0 ) |
| 56 | +{ |
| 57 | + CreateDirectoryIfNeeded ( $Save ) |
| 58 | + $downloadFile = $Save |
| 59 | + $deleteZipFile = $FALSE |
| 60 | +} |
| 61 | +else |
| 62 | +{ |
| 63 | + # Use the %TEMP% path for the user. |
| 64 | + $downloadFile = $env:temp |
| 65 | +} |
| 66 | + |
| 67 | +# Build up the full location and filename. |
| 68 | +$downloadFile = $(Get-item $downloadFile).FullName |
| 69 | +$downloadFile = Join-Path -path $downloadFile -childpath "SysinternalsSuite.zip" |
| 70 | + |
| 71 | +# Let the download begin! |
| 72 | +Write-Output "Starting download of the Sysinternals Suite" |
| 73 | +$webClient = New-Object System.Net.WebClient |
| 74 | +$webClient.DownloadFile("http://download.sysinternals.com/Files/SysinternalsSuite.zip" , |
| 75 | + $downloadFile) |
| 76 | +Write-Output "Sysinternals suite downloaded to $downloadFile" |
| 77 | + |
| 78 | +# I don't like to see all the output from 7z unless there's a problem so I'll |
| 79 | +# redirect to a temporary file and if there's any problems, I'll show it. |
| 80 | +$temp7zOutput = [System.IO.Path]::GetTempFileName() |
| 81 | + |
| 82 | +# Since the -o option to 7Z.EXE cannot have a space between it and the |
| 83 | +# directory there's a bit of a problem. PowerShell does not expand the |
| 84 | +# line -o$Extract if passed directly on the command line. |
| 85 | +$outputOption = "-o$Extract" |
| 86 | +Write-Output "Extracting files into $Extract" |
| 87 | +&$sevenZPath x -y $outputOption $downloadFile > $temp7zOutput |
| 88 | +if ( $LASTEXITCODE -ne 0 ) |
| 89 | +{ |
| 90 | + # There was a problem extracting. |
| 91 | + Get-Content $temp7zOutput |
| 92 | + # Don't delete the download file. |
| 93 | + $deleteZipFile = $FALSE |
| 94 | + Write-Error "Error extracting the .ZIP file" |
| 95 | + Write-Error "The downloaded .ZIP file is at $downloadFile and will not be deleted." |
| 96 | +} |
| 97 | +# Delete the file that held the extraction output. |
| 98 | +del $temp7zOutput |
| 99 | +# Delete the downloaded .ZIP file if I'm supposed to. |
| 100 | +if ( $deleteZipFile -eq $TRUE ) |
| 101 | +{ |
| 102 | + Remove-Item $downloadFile |
| 103 | +} |
| 104 | +# SIG # Begin signature block |
| 105 | +# MIIOkQYJKoZIhvcNAQcCoIIOgjCCDn4CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB |
| 106 | +# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR |
| 107 | +# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU7AbysY1hQT5IPRqPBoFLINGN |
| 108 | +# 8CaggglnMIIEXDCCA0SgAwIBAgIQT2PQMPgVo6WzRGlABj0WiTANBgkqhkiG9w0B |
| 109 | +# AQUFADCBlTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0 |
| 110 | +# IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYD |
| 111 | +# VQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNVBAMTFFVUTi1VU0VS |
| 112 | +# Rmlyc3QtT2JqZWN0MB4XDTA1MDUxNzAwMDAwMFoXDTEwMDUxNjIzNTk1OVowfjEL |
| 113 | +# MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE |
| 114 | +# BxMHU2FsZm9yZDEaMBgGA1UEChMRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNVBAMT |
| 115 | +# G0NvbW9kbyBUaW1lIFN0YW1waW5nIFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQAD |
| 116 | +# ggEPADCCAQoCggEBALw1oDZwIoERw7KDudMoxjbNJWupe7Ic9ptRnO819O0Ijl44 |
| 117 | +# CPh3PApC4PNw3KPXyvVMC8//IpwKfmjWCaIqhHumnbSpwTPi7x8XSMo6zUbmxap3 |
| 118 | +# veN3mvpHU0AoWUOT8aSB6u+AtU+nCM66brzKdgyXZFmGJLs9gpCoVbGS06CnBayf |
| 119 | +# UyUIEEeZzZjeaOW0UHijrwHMWUNY5HZufqzH4p4fT7BHLcgMo0kngHWMuwaRZQ+Q |
| 120 | +# m/S60YHIXGrsFOklCb8jFvSVRkBAIbuDlv2GH3rIDRCOovgZB1h/n703AmDypOmd |
| 121 | +# RD8wBeSncJlRmugX8VXKsmGJZUanavJYRn6qoAcCAwEAAaOBvTCBujAfBgNVHSME |
| 122 | +# GDAWgBTa7WR0FJwUPKvdmam9WyhNizzJ2DAdBgNVHQ4EFgQULi2wCkRK04fAAgfO |
| 123 | +# l31QYiD9D4MwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/ |
| 124 | +# BAwwCgYIKwYBBQUHAwgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2Vy |
| 125 | +# dHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtT2JqZWN0LmNybDANBgkqhkiG9w0BAQUF |
| 126 | +# AAOCAQEASo/8HjCoPHXoR+dzrrBperJNvFDWmo+BtmAq9wKlSDoeFccYaxwYpMnf |
| 127 | +# /fHO97gq1m2nzeV9IT0eP3TIorh5liiu4fpzQ/J6voAuZwTaF/qeWpb1nG1+foxs |
| 128 | +# gSdQf2jYifp9BFlnDy105JmH18HhXRFKJvcmEIBnwsP3zzQbxHkhzGA1v6lgd57L |
| 129 | +# vFIyImyt2t9t3fMuNs3Fp1Tg9KTM4/XUYk+ZBgzlb1lvEcfPWCS/ryUdRRF3mWWu |
| 130 | +# MdRdSJ2Mw3JyKZnlCvG5zFo8SNP/QM7NEAM9vzOcCPMQIipHsHcr7ltOZeDTIzwD |
| 131 | +# xM8uRWJpDhvSC/nzIA9TGtB8cfE40DCCBQMwggProAMCAQICEAagBWkwBM7q0PKO |
| 132 | +# CWWI7eQwDQYJKoZIhvcNAQEFBQAwgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJV |
| 133 | +# VDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV |
| 134 | +# U1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3QuY29tMR0w |
| 135 | +# GwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDAeFw0wNzEyMTgwMDAwMDBaFw0x |
| 136 | +# MDEyMTcyMzU5NTlaMIGqMQswCQYDVQQGEwJVUzEOMAwGA1UEEQwFOTgxMjExCzAJ |
| 137 | +# BgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMREwDwYDVQQJDAhVbml0ICNFNDEV |
| 138 | +# MBMGA1UECQwMMjAyMSAxc3QgQXZlMSAwHgYDVQQKDBdKb2huIFJvYmJpbnMvV2lu |
| 139 | +# dGVsbGVjdDEgMB4GA1UEAwwXSm9obiBSb2JiaW5zL1dpbnRlbGxlY3QwggEiMA0G |
| 140 | +# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDY0nEbQGJDWzEMPvhBv64poRE67XXK |
| 141 | +# +vWBFGDr8hqeIz+pCinhRhr154HCTIb60tZKcHLhSWmw7l1bpuvYRWkfG8C7EwD2 |
| 142 | +# uLqaMrsoSMYOU7yWJSY+GCvKtsEqp5dEMJgdyIiB6RdWgjsy/GxOFpg+3rIzeG42 |
| 143 | +# evVtOJVZErlQVuwLb5C+1yiH1zeXxBHRqBUmZfyQ8HZCcpH4+GIu8C2IH9EnMp0y |
| 144 | +# rleHn/3+ktJgFAbvKd5Zvd8y25q00IsEgnDh9lVQW14u9IT/7eMPJFX5jl7+tLRp |
| 145 | +# on0zESO6s/wF1DeRmDMf3YUrH+9MuPem9wWdqA/qydeZW2MILZhZENYBAgMBAAGj |
| 146 | +# ggE2MIIBMjAfBgNVHSMEGDAWgBTa7WR0FJwUPKvdmam9WyhNizzJ2DAdBgNVHQ4E |
| 147 | +# FgQU5WhsWlzWc1O+dlk1OaqKBBn2TzswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB |
| 148 | +# /wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYJYIZIAYb4QgEBBAQDAgQQMEYG |
| 149 | +# A1UdIAQ/MD0wOwYMKwYBBAGyMQECAQMCMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8v |
| 150 | +# c2VjdXJlLmNvbW9kby5uZXQvQ1BTMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9j |
| 151 | +# cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU9iamVjdC5jcmwwHgYDVR0R |
| 152 | +# BBcwFYETam9obkB3aW50ZWxsZWN0LmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAJsf+ |
| 153 | +# TRTjeQNVevP1BCLwAVs9J3+Ti2w1FNoJhTEpW/kfZWy6vPvnZdB1FjE8zWnpYRzu |
| 154 | +# mMT6JFtG13d954iLu21njsDsq4Eemi6TVmCbH1rHWqcViW9B0U4chc6PznFY1G7w |
| 155 | +# rauc6VYqOlmQ23J3etJddzExDQ6axhJ/K4XRBwb1G7JfqtLxk03EljB/MeHBfEbW |
| 156 | +# qUc7sNih9uj6qBehPFFsgX1y/XN0n75Z30LoGAyTWbGjITThpX1eiiYTv2SSI0hY |
| 157 | +# 3uZlCFo9ymPReZBQu/Ywj+T1HWDklnUrAHwjtsMclilpcCnjdvFDua3DFsGy5M6Q |
| 158 | +# w2aGrNS3lwMD2f3n1DGCBJQwggSQAgEBMIGqMIGVMQswCQYDVQQGEwJVUzELMAkG |
| 159 | +# A1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUg |
| 160 | +# VVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0 |
| 161 | +# LmNvbTEdMBsGA1UEAxMUVVROLVVTRVJGaXJzdC1PYmplY3QCEAagBWkwBM7q0PKO |
| 162 | +# CWWI7eQwCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJ |
| 163 | +# KoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQB |
| 164 | +# gjcCARUwIwYJKoZIhvcNAQkEMRYEFNSNxwPsYevQxMUtnVWZEz+n1lbAMA0GCSqG |
| 165 | +# SIb3DQEBAQUABIIBAKl2ouzFQ/1uqHOoVdlcTyInlrLzwCPnhZwhFJ14zsAaxhKR |
| 166 | +# f+i7MDNyLPJE4Sb6vO0GVFDIuqmvX8enh6VDulY/gr11KreSuuEwODgCEpCy9rLx |
| 167 | +# YxyJfnjKOuJwJNwtpbmHDjXyKH0C3ANa1szZ1EplAmqG0+LwdGM0hRIyZhT5Q1DM |
| 168 | +# 5zODm7vqrjR5NUDPYCt4v/iKsPlcDOqgFB7H/Nn52/kQDPca+FyG7hsmsP3P3SpF |
| 169 | +# Bh3npAtW+qQf5044XXL1ZBu8mVkZ4UQjmFEKYoSC/4Jw+JpElq79B+nD2M9hX4zp |
| 170 | +# ldjz9wz+sAzVyPTQLWHTGs6pl3iqt2WLrLmaZqqhggJEMIICQAYJKoZIhvcNAQkG |
| 171 | +# MYICMTCCAi0CAQEwgaowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUG |
| 172 | +# A1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0 |
| 173 | +# d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3QuY29tMR0wGwYDVQQD |
| 174 | +# ExRVVE4tVVNFUkZpcnN0LU9iamVjdAIQT2PQMPgVo6WzRGlABj0WiTAJBgUrDgMC |
| 175 | +# GgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcN |
| 176 | +# MDkxMTI0MDE1OTM2WjAjBgkqhkiG9w0BCQQxFgQUOtofETnIUktKJdBRAiCJ7U0w |
| 177 | +# jNQwDQYJKoZIhvcNAQEBBQAEggEAmyFFSNrvszS3mU8u2Z66fx7aBdvSNWAEo9vp |
| 178 | +# htmhKkix/28AZhbRoyiBavvi1NI813swmYdO4YwW71P8NBNC59wuMpL5u0CrS3zV |
| 179 | +# +ziZVxLBJ53usRP2oFB6hXcUAU1DiTpoRUEIIxo8nAx7hg29dV6anm95naAk37GO |
| 180 | +# 7OPqjHxX1+/cBD6PhygdXZjOBnYBrp7SLr49WeNKTNYP7L+wTpoOuTy1NEMPLpGY |
| 181 | +# Fu045e/l7nyCCdJA3YANMIjsp4PzqVygAkLjC6+h2RKdcVuAiV5cKlF/JdzbpOGr |
| 182 | +# LLSrkYSPZan+seI73x6ml8iOd95Vb/GyIV8clzO1p2cqF9xh/g== |
| 183 | +# SIG # End signature block |
0 commit comments