collect state before and after
Catalin-Emil Fetoiu committed
Apr 5, 2024 at 15:09 UTC
7c6b84f25551e714895de017dc9181dc1c8c23c1
1 file changed
+103
-92
diagnostics/collect-networking-logs.ps1
+103
-92
@@ -5,6 +5,104 @@ Param (
5
[switch]$RestartWslReproMode = $false
6
)
7
8
+function Collect-WindowsNetworkState {
9
+
10
+ param (
11
+ $ReproStep
12
+ )
13
+
14
+ # Collect host networking state relevant for WSL
15
+ # Using a try/catch for commands below, as some of them do not exist on all OS versions
16
+
17
+ try
18
+ {
19
+ Get-NetAdapter -includeHidden | select Name,ifIndex,NetLuid,InterfaceGuid,Status,MacAddress,MtuSize,InterfaceType,Hidden,HardwareInterface,ConnectorPresent,MediaType,PhysicalMediaType | Out-File -FilePath "$folder/Get-NetAdapter_$ReproStep.log" -Append
20
+ }
21
+ catch {}
22
+
23
+ try
24
+ {
25
+ Get-NetIPConfiguration -All -Detailed | Out-File -FilePath "$folder/Get-NetIPConfiguration_$ReproStep.log" -Append
26
+ }
27
+ catch {}
28
+
29
+ try
30
+ {
31
+ Get-NetRoute | Out-File -FilePath "$folder/Get-NetRoute_$ReproStep.log" -Append
32
+ }
33
+ catch {}
34
+
35
+ try
36
+ {
37
+ Get-NetFirewallHyperVVMCreator | Out-File -FilePath "$folder/Get-NetFirewallHyperVVMCreator_$ReproStep.log" -Append
38
+ }
39
+ catch {}
40
+
41
+ try
42
+ {
43
+ Get-NetFirewallHyperVVMSetting -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallHyperVVMSetting_ActiveStore_$ReproStep.log" -Append
44
+ }
45
+ catch {}
46
+
47
+ try
48
+ {
49
+ Get-NetFirewallHyperVProfile -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallHyperVProfile_ActiveStore_$ReproStep.log" -Append
50
+ }
51
+ catch {}
52
+
53
+ try
54
+ {
55
+ Get-NetFirewallHyperVRule -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallHyperVRule_ActiveStore_$ReproStep.log" -Append
56
+ }
57
+ catch {}
58
+
59
+ try
60
+ {
61
+ Get-NetFirewallRule -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallRule_ActiveStore_$ReproStep.log" -Append
62
+ }
63
+ catch {}
64
+
65
+ try
66
+ {
67
+ Get-NetFirewallProfile -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallProfile_ActiveStore_$ReproStep.log" -Append
68
+ }
69
+ catch {}
70
+
71
+ try
72
+ {
73
+ Get-NetFirewallHyperVPort | Out-File -FilePath "$folder/Get-NetFirewallHyperVPort_$ReproStep.log" -Append
74
+ }
75
+ catch {}
76
+
77
+ try
78
+ {
79
+ & hnsdiag.exe list all 2>&1 > $folder/hnsdiag_list_all_"$ReproStep".log
80
+ }
81
+ catch {}
82
+
83
+ try
84
+ {
85
+ & hnsdiag.exe list endpoints -df 2>&1 > $folder/hnsdiag_list_endpoints_"$ReproStep".log
86
+ }
87
+ catch {}
88
+
89
+ try
90
+ {
91
+ foreach ($port in Get-NetFirewallHyperVPort)
92
+ {
93
+ & vfpctrl.exe /port $port.PortName /get-port-state 2>&1 > "$folder/vfp-port-$($port.PortName)-get-port-state_$ReproStep.log"
94
+ & vfpctrl.exe /port $port.PortName /list-rule 2>&1 > "$folder/vfp-port-$($port.PortName)-list-rule_$ReproStep.log"
95
+ }
96
+ }
97
+ catch {}
98
+
99
+ try
100
+ {
101
+ & vfpctrl.exe /list-vmswitch-port 2>&1 > $folder/vfpctrl_list_vmswitch_port_"$ReproStep".log
102
+ }
103
+ catch {}
104
+}
105
+
106
$folder = "WslNetworkingLogs-" + (Get-Date -Format "yyyy-MM-dd_HH-mm-ss")
107
mkdir -p $folder
108
@@ -41,9 +139,11 @@ if (Test-Path $wslconfig)
139
Copy-Item $wslconfig $folder
140
}
141
44
-# Collect Linux network state before the repro
142
+# Collect Linux & Windows network state before the repro
143
& wsl.exe -u root -e $networkingBashScript 2>&1 > $folder/linux_network_configuration_before.log
144
145
+Collect-WindowsNetworkState "before_repro"
146
+
147
if ($RestartWslReproMode)
148
{
149
# The WSL HNS network is created once per boot. Resetting it to collect network creation logs.
@@ -153,99 +253,10 @@ finally
253
wpr.exe -stop $folder/logs.etl 2>&1 >> $wprOutputLog
254
}
255
156
-# Collect Linux network state after the repro
256
+# Collect Linux & Windows network state after the repro
257
& wsl.exe -u root -e $networkingBashScript 2>&1 > $folder/linux_network_configuration_after.log
258
159
-# Collect host networking state relevant for WSL
160
-# Using a try/catch for commands below, as some of them do not exist on all OS versions
161
-
162
-try
163
-{
164
- Get-NetAdapter -includeHidden | select Name,ifIndex,NetLuid,InterfaceGuid,Status,MacAddress,MtuSize,InterfaceType,Hidden,HardwareInterface,ConnectorPresent,MediaType,PhysicalMediaType | Out-File -FilePath "$folder/Get-NetAdapter.log" -Append
165
-}
166
-catch {}
167
-
168
-try
169
-{
170
- Get-NetIPConfiguration -All -Detailed | Out-File -FilePath "$folder/Get-NetIPConfiguration.log" -Append
171
-}
172
-catch {}
173
-
174
-try
175
-{
176
- Get-NetRoute | Out-File -FilePath "$folder/Get-NetRoute.log" -Append
177
-}
178
-catch {}
179
-
180
-try
181
-{
182
- Get-NetFirewallHyperVVMCreator | Out-File -FilePath "$folder/Get-NetFirewallHyperVVMCreator.log" -Append
183
-}
184
-catch {}
185
-
186
-try
187
-{
188
- Get-NetFirewallHyperVVMSetting -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallHyperVVMSetting_ActiveStore.log" -Append
189
-}
190
-catch {}
191
-
192
-try
193
-{
194
- Get-NetFirewallHyperVProfile -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallHyperVProfile_ActiveStore.log" -Append
195
-}
196
-catch {}
197
-
198
-try
199
-{
200
- Get-NetFirewallHyperVRule -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallHyperVRule_ActiveStore.log" -Append
201
-}
202
-catch {}
203
-
204
-try
205
-{
206
- Get-NetFirewallRule -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallRule_ActiveStore.log" -Append
207
-}
208
-catch {}
209
-
210
-try
211
-{
212
- Get-NetFirewallProfile -PolicyStore ActiveStore | Out-File -FilePath "$folder/Get-NetFirewallProfile_ActiveStore.log" -Append
213
-}
214
-catch {}
215
-
216
-try
217
-{
218
- Get-NetFirewallHyperVPort | Out-File -FilePath "$folder/Get-NetFirewallHyperVPort.log" -Append
219
-}
220
-catch {}
221
-
222
-try
223
-{
224
- & hnsdiag.exe list all 2>&1 > $folder/hnsdiag_list_all.log
225
-}
226
-catch {}
227
-
228
-try
229
-{
230
- & hnsdiag.exe list endpoints -df 2>&1 > $folder/hnsdiag_list_endpoints.log
231
-}
232
-catch {}
233
-
234
-try
235
-{
236
- foreach ($port in Get-NetFirewallHyperVPort)
237
- {
238
- & vfpctrl.exe /port $port.PortName /get-port-state 2>&1 > "$folder/vfp-port-$($port.PortName)-get-port-state.log"
239
- & vfpctrl.exe /port $port.PortName /list-rule 2>&1 > "$folder/vfp-port-$($port.PortName)-list-rule.log"
240
- }
241
-}
242
-catch {}
243
-
244
-try
245
-{
246
- & vfpctrl.exe /list-vmswitch-port 2>&1 > $folder/vfpctrl_list_vmswitch_port.log
247
-}
248
-catch {}
259
+Collect-WindowsNetworkState "after_repro"
260
261
try
262
{