以下脚本的作用是什么?
What does the following script do?
@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 } } }"
发现这个批处理脚本隐藏在某处
在我的 C: 驱动器中,想知道这个脚本的作用。
这是脚本的 Powershell 部分:
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 }
}
Powershell 部分:
- 获取您的驱动器映射
- 已用完 space 的支票(可能全部)
- 遍历这些并删除 Windows10Upgrade 文件夹中扩展名为
.esd
的所有文件
例如
M:\Windows10Upgrade\*.esd
S:\Windows10Upgrade\*.esd
T:\Windows10Upgrade\*.esd
查看下面的代码注释版本,解释每一行:
# 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 }
}
我建议 运行 在 Powershell 中这样做:
Get-PSDrive -PSProvider FileSystem |
Where-Object { $_.Used -gt 0 }
了解其工作原理。
@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 } } }"
发现这个批处理脚本隐藏在某处 在我的 C: 驱动器中,想知道这个脚本的作用。
这是脚本的 Powershell 部分:
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 }
}
Powershell 部分:
- 获取您的驱动器映射
- 已用完 space 的支票(可能全部)
- 遍历这些并删除 Windows10Upgrade 文件夹中扩展名为
.esd
的所有文件
例如
M:\Windows10Upgrade\*.esd
S:\Windows10Upgrade\*.esd
T:\Windows10Upgrade\*.esd
查看下面的代码注释版本,解释每一行:
# 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 }
}
我建议 运行 在 Powershell 中这样做:
Get-PSDrive -PSProvider FileSystem |
Where-Object { $_.Used -gt 0 }
了解其工作原理。