fix(setup): Measure-Object .Sum null-dereference under Set-StrictMode -Version Latest
PS 5.1 treats GenericMeasureInfo.Sum as absent (not null) when the input pipe is empty. StrictMode throws 'property Sum cannot be found'. Replace Measure-Object with an explicit foreach loop for SoftwareDistribution size reporting. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1031,7 +1031,11 @@ Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv' `
|
|||||||
# normal and harmless: WU is permanently disabled by Step 6b (service Disabled + GPO keys).
|
# normal and harmless: WU is permanently disabled by Step 6b (service Disabled + GPO keys).
|
||||||
# Report remaining size as informational only.
|
# Report remaining size as informational only.
|
||||||
$sdFiles = Get-ChildItem 'C:\Windows\SoftwareDistribution\Download' -Recurse -File -Force -ErrorAction SilentlyContinue
|
$sdFiles = Get-ChildItem 'C:\Windows\SoftwareDistribution\Download' -Recurse -File -Force -ErrorAction SilentlyContinue
|
||||||
$sdMB = [math]::Round(($sdFiles | Measure-Object -Property Length -Sum).Sum / 1MB, 1)
|
# Avoid Measure-Object .Sum: under Set-StrictMode -Version Latest, PS 5.1 treats the
|
||||||
|
# nullable Sum property as absent when the pipe is empty, throwing "property not found".
|
||||||
|
$sdBytes = [long]0
|
||||||
|
if ($sdFiles) { foreach ($f in $sdFiles) { $sdBytes += $f.Length } }
|
||||||
|
$sdMB = [math]::Round($sdBytes / 1MB, 1)
|
||||||
Write-Host " SoftwareDistribution\Download: $($sdFiles.Count) file(s), ${sdMB} MB remaining (WaaSMedicSvc best-effort, WU is disabled)."
|
Write-Host " SoftwareDistribution\Download: $($sdFiles.Count) file(s), ${sdMB} MB remaining (WaaSMedicSvc best-effort, WU is disabled)."
|
||||||
|
|
||||||
Assert-Step 'Cleanup' 'wuauserv StartType Disabled after cache clear' {
|
Assert-Step 'Cleanup' 'wuauserv StartType Disabled after cache clear' {
|
||||||
|
|||||||
Reference in New Issue
Block a user