Skip to content

Commit d050962

Browse files
committed
Initial Import
0 parents  commit d050962

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+3182
-0
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*.user
2+
*.suo
3+
*/bin
4+
*/obj
5+
_ReSharper.*

.hgignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
glob:*.user
2+
glob:*.suo
3+
glob:*/bin
4+
glob:*/obj
5+
glob:_ReSharper.*

Get-SysinternalsSuite.ps1

+183
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
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
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
(Get-ItemProperty HKCU:\Software\Microsoft\VisualStudio\10.0\Debugger\).SourceServerExtractToDirectory
2+
# SIG # Begin signature block
3+
# MIIOkQYJKoZIhvcNAQcCoIIOgjCCDn4CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
4+
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
5+
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUWNhR7bkvm1h2Y0aFgUZCGRvV
6+
# ysOggglnMIIEXDCCA0SgAwIBAgIQT2PQMPgVo6WzRGlABj0WiTANBgkqhkiG9w0B
7+
# AQUFADCBlTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0
8+
# IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYD
9+
# VQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNVBAMTFFVUTi1VU0VS
10+
# Rmlyc3QtT2JqZWN0MB4XDTA1MDUxNzAwMDAwMFoXDTEwMDUxNjIzNTk1OVowfjEL
11+
# MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
12+
# BxMHU2FsZm9yZDEaMBgGA1UEChMRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNVBAMT
13+
# G0NvbW9kbyBUaW1lIFN0YW1waW5nIFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQAD
14+
# ggEPADCCAQoCggEBALw1oDZwIoERw7KDudMoxjbNJWupe7Ic9ptRnO819O0Ijl44
15+
# CPh3PApC4PNw3KPXyvVMC8//IpwKfmjWCaIqhHumnbSpwTPi7x8XSMo6zUbmxap3
16+
# veN3mvpHU0AoWUOT8aSB6u+AtU+nCM66brzKdgyXZFmGJLs9gpCoVbGS06CnBayf
17+
# UyUIEEeZzZjeaOW0UHijrwHMWUNY5HZufqzH4p4fT7BHLcgMo0kngHWMuwaRZQ+Q
18+
# m/S60YHIXGrsFOklCb8jFvSVRkBAIbuDlv2GH3rIDRCOovgZB1h/n703AmDypOmd
19+
# RD8wBeSncJlRmugX8VXKsmGJZUanavJYRn6qoAcCAwEAAaOBvTCBujAfBgNVHSME
20+
# GDAWgBTa7WR0FJwUPKvdmam9WyhNizzJ2DAdBgNVHQ4EFgQULi2wCkRK04fAAgfO
21+
# l31QYiD9D4MwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/
22+
# BAwwCgYIKwYBBQUHAwgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2Vy
23+
# dHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtT2JqZWN0LmNybDANBgkqhkiG9w0BAQUF
24+
# AAOCAQEASo/8HjCoPHXoR+dzrrBperJNvFDWmo+BtmAq9wKlSDoeFccYaxwYpMnf
25+
# /fHO97gq1m2nzeV9IT0eP3TIorh5liiu4fpzQ/J6voAuZwTaF/qeWpb1nG1+foxs
26+
# gSdQf2jYifp9BFlnDy105JmH18HhXRFKJvcmEIBnwsP3zzQbxHkhzGA1v6lgd57L
27+
# vFIyImyt2t9t3fMuNs3Fp1Tg9KTM4/XUYk+ZBgzlb1lvEcfPWCS/ryUdRRF3mWWu
28+
# MdRdSJ2Mw3JyKZnlCvG5zFo8SNP/QM7NEAM9vzOcCPMQIipHsHcr7ltOZeDTIzwD
29+
# xM8uRWJpDhvSC/nzIA9TGtB8cfE40DCCBQMwggProAMCAQICEAagBWkwBM7q0PKO
30+
# CWWI7eQwDQYJKoZIhvcNAQEFBQAwgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJV
31+
# VDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV
32+
# U1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3QuY29tMR0w
33+
# GwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDAeFw0wNzEyMTgwMDAwMDBaFw0x
34+
# MDEyMTcyMzU5NTlaMIGqMQswCQYDVQQGEwJVUzEOMAwGA1UEEQwFOTgxMjExCzAJ
35+
# BgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMREwDwYDVQQJDAhVbml0ICNFNDEV
36+
# MBMGA1UECQwMMjAyMSAxc3QgQXZlMSAwHgYDVQQKDBdKb2huIFJvYmJpbnMvV2lu
37+
# dGVsbGVjdDEgMB4GA1UEAwwXSm9obiBSb2JiaW5zL1dpbnRlbGxlY3QwggEiMA0G
38+
# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDY0nEbQGJDWzEMPvhBv64poRE67XXK
39+
# +vWBFGDr8hqeIz+pCinhRhr154HCTIb60tZKcHLhSWmw7l1bpuvYRWkfG8C7EwD2
40+
# uLqaMrsoSMYOU7yWJSY+GCvKtsEqp5dEMJgdyIiB6RdWgjsy/GxOFpg+3rIzeG42
41+
# evVtOJVZErlQVuwLb5C+1yiH1zeXxBHRqBUmZfyQ8HZCcpH4+GIu8C2IH9EnMp0y
42+
# rleHn/3+ktJgFAbvKd5Zvd8y25q00IsEgnDh9lVQW14u9IT/7eMPJFX5jl7+tLRp
43+
# on0zESO6s/wF1DeRmDMf3YUrH+9MuPem9wWdqA/qydeZW2MILZhZENYBAgMBAAGj
44+
# ggE2MIIBMjAfBgNVHSMEGDAWgBTa7WR0FJwUPKvdmam9WyhNizzJ2DAdBgNVHQ4E
45+
# FgQU5WhsWlzWc1O+dlk1OaqKBBn2TzswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB
46+
# /wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYJYIZIAYb4QgEBBAQDAgQQMEYG
47+
# A1UdIAQ/MD0wOwYMKwYBBAGyMQECAQMCMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8v
48+
# c2VjdXJlLmNvbW9kby5uZXQvQ1BTMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9j
49+
# cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU9iamVjdC5jcmwwHgYDVR0R
50+
# BBcwFYETam9obkB3aW50ZWxsZWN0LmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAJsf+
51+
# TRTjeQNVevP1BCLwAVs9J3+Ti2w1FNoJhTEpW/kfZWy6vPvnZdB1FjE8zWnpYRzu
52+
# mMT6JFtG13d954iLu21njsDsq4Eemi6TVmCbH1rHWqcViW9B0U4chc6PznFY1G7w
53+
# rauc6VYqOlmQ23J3etJddzExDQ6axhJ/K4XRBwb1G7JfqtLxk03EljB/MeHBfEbW
54+
# qUc7sNih9uj6qBehPFFsgX1y/XN0n75Z30LoGAyTWbGjITThpX1eiiYTv2SSI0hY
55+
# 3uZlCFo9ymPReZBQu/Ywj+T1HWDklnUrAHwjtsMclilpcCnjdvFDua3DFsGy5M6Q
56+
# w2aGrNS3lwMD2f3n1DGCBJQwggSQAgEBMIGqMIGVMQswCQYDVQQGEwJVUzELMAkG
57+
# A1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUg
58+
# VVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0
59+
# LmNvbTEdMBsGA1UEAxMUVVROLVVTRVJGaXJzdC1PYmplY3QCEAagBWkwBM7q0PKO
60+
# CWWI7eQwCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJ
61+
# KoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQB
62+
# gjcCARUwIwYJKoZIhvcNAQkEMRYEFCD7ygicvGGPEEzCBw9AIn8rvsqgMA0GCSqG
63+
# SIb3DQEBAQUABIIBAK4kktMdsdko+qI3556brocNgt0oz/KRwXVKYaNiDrwnsTM/
64+
# NqOqFN/BPBdfRNnltNhVdkZDHd165wP3syoLQkgQvTDkcoyIPB6YDntiXBG+2GOy
65+
# HngMLiI4DEba2xEMevsOVOMkrPsRsnEDCIyenCsCIO6rEh78bktwW3kyl0TBJGCy
66+
# ucl6qm8BopjUI8oG3jHu2TnatjH2At6oiWBgzCIy/OwCaGtckVLBezCrG2rezmV6
67+
# N/VthoKTI7nwBNPIY5nogQBsWgYDE22DNJY9+Ph0PQ6MQe3QFe9987b1vaKrr+XV
68+
# FxeTURywVNT4CKgLUT12xVb6VGAeWjaNBbVz0mChggJEMIICQAYJKoZIhvcNAQkG
69+
# MYICMTCCAi0CAQEwgaowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUG
70+
# A1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0
71+
# d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3QuY29tMR0wGwYDVQQD
72+
# ExRVVE4tVVNFUkZpcnN0LU9iamVjdAIQT2PQMPgVo6WzRGlABj0WiTAJBgUrDgMC
73+
# GgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcN
74+
# MDkxMTI0MDE1OTM3WjAjBgkqhkiG9w0BCQQxFgQUJUnnnWRVQ0SbcpLwd4c7Ny2w
75+
# mL4wDQYJKoZIhvcNAQEBBQAEggEAJHqCCOX7tLz2fkdr3PQrZTfg7xubZV12j8U0
76+
# uiguPQEYqdf8q2pqzcASFwYgfQRZjw0JgX8xpJ4Q/Ijs3Jd78t4uEiPE9zc4wuZZ
77+
# +z4z1PFmuBnJz+6zM3hV4/sNL/9JBz/eINN1D5loiuDB8Z6uknXvdXQn0bAaAlhH
78+
# HScRT42S+rywgwb5vxYMuPgWw56RS+Qn25mKLvblxmxkhzgmJWQd9HKkahAuReh6
79+
# rBX/Lp+f5IOlRLzEDaYLRWOpn0MGZYCY1fi2kui1EXFGp8e99xf0Osf107xGoVQW
80+
# ifAk4mPvxVPicATyn4u/aLRDkA9iml0+mgOsfheBKAM+pITtHg==
81+
# SIG # End signature block

Invoke-Batchfile.ps1

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<#
2+
.SYNOPSIS
3+
Invokes the specified batch file and retains any environment variable changes
4+
it makes.
5+
.DESCRIPTION
6+
Invoke the specified batch file (and parameters), but also propagate any
7+
environment variable changes back to the PowerShell environment that
8+
called it.
9+
.PARAMETER Path
10+
Path to a .bat or .cmd file.
11+
.PARAMETER Parameters
12+
Parameters to pass to the batch file.
13+
.EXAMPLE
14+
C:\PS> Invoke-BatchFile "$env:VS90COMNTOOLS\..\..\vc\vcvarsall.bat"
15+
Invokes the vcvarsall.bat file to set up a 32-bit dev environment. All
16+
environment variable changes it makes will be propagated to the current
17+
PowerShell session.
18+
.EXAMPLE
19+
C:\PS> Invoke-BatchFile "$env:VS90COMNTOOLS\..\..\vc\vcvarsall.bat" amd64
20+
Invokes the vcvarsall.bat file to set up a 64-bit dev environment. All
21+
environment variable changes it makes will be propagated to the current
22+
PowerShell session.
23+
.NOTES
24+
Author: Lee Holmes
25+
#>
26+
function Invoke-BatchFile
27+
{
28+
param([string]$Path, [string]$Parameters)
29+
30+
$tempFile = [IO.Path]::GetTempFileName()
31+
32+
## Store the output of cmd.exe. We also ask cmd.exe to output
33+
## the environment table after the batch file completes
34+
cmd.exe /c " `"$Path`" $Parameters && set > `"$tempFile`" "
35+
36+
## Go through the environment variables in the temp file.
37+
## For each of them, set the variable in our local environment.
38+
Get-Content $tempFile | Foreach-Object {
39+
if ($_ -match "^(.*?)=(.*)$")
40+
{
41+
Set-Content "env:\$($matches[1])" $matches[2]
42+
}
43+
}
44+
45+
Remove-Item $tempFile
46+
}
47+

0 commit comments

Comments
 (0)