Reputation: 427
@echo off
setlocal
set _RunOnceValue=%~d0%\Windows10Upgrade\Windows10UpgraderApp.exe /SkipSelfUpdate
set _RunOnceKey=Windows10UpgraderApp.exe
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "%_RunOnceKey%" /t REG_SZ /F /D "%_RunOnceValue%"
PowerShell -Command "&{ Get-PSDrive -PSProvider FileSystem | Where-Object { $_.Used -gt 0 } | ForEach-Object { $esdOriginalFilePath = 'C:\Windows10Upgrade\\*.esd'; $driveName = $_.Name; $esdFilePath = $esdOriginalFilePath -replace '^\w',$driveName; if (Test-Path $esdFilePath) { Remove-Item $esdFilePath } } }"
Found this batch script hidden somewhere in my C: Drive and want to know what does this script do.
This is the Powershell portion of the script:
Get-PSDrive -PSProvider FileSystem |
Where-Object { $_.Used -gt 0 } |
ForEach-Object {
$esdOriginalFilePath = 'C:\Windows10Upgrade\\*.esd';
$driveName = $_.Name;
$esdFilePath = $esdOriginalFilePath -replace '^\w',$driveName;
if (Test-Path $esdFilePath)
{ Remove-Item $esdFilePath }
}
Upvotes: 0
Views: 456
Reputation: 5452
The Powershell part:
.esd
e.g.
M:\Windows10Upgrade\*.esd
S:\Windows10Upgrade\*.esd
T:\Windows10Upgrade\*.esd
See below for a commented version of the code, explaining each line:
# Get shared drives
Get-PSDrive -PSProvider FileSystem |
# Filter just those with used space
Where-Object { $_.Used -gt 0 } |
# Go through each of those drives
ForEach-Object {
# Set a variable with the Windows10Upgrade folder and *.esd wildcard
$esdOriginalFilePath = 'C:\Windows10Upgrade\\*.esd';
# Get the drive name for the one currently in the loop ($_)
$driveName = $_.Name;
# Use a regex replace of the first 'word' character with drivename (e.g. C -> E, C -> W)
$esdFilePath = $esdOriginalFilePath -replace '^\w',$driveName;
# Check if the path exists
if (Test-Path $esdFilePath)
# If so, remove the file
{ Remove-Item $esdFilePath }
}
I would suggest running this in Powershell:
Get-PSDrive -PSProvider FileSystem |
Where-Object { $_.Used -gt 0 }
To get an idea of how this works.
Upvotes: 3