[英]Windows Powershell command line equivalent of dd
我正在编写一个 Powershell 脚本来制作驱动器的原始副本,但我一直无法找到完成此操作的方法。
在 Linux 上,我将使用“dd”来执行此复制。
有一些工具可以在 Windows 上执行此操作,但我无法直接从命令行控制。 (都有GUI界面)
有没有办法通过 Powershell 制作一个驱动器的物理副本?
谢谢。
我自己已经尝试这样做了一段时间,我终于找到了一个很好的答案。
适用于 Windows 的 Git 附带一整套 GNU 核心实用程序(已更新与您可以单独找到的内容相比),包括 dd!
只需安装适用于 Windows 的 Git 或提取便携式版本,从 git\\usr\\bin\\ 的安装目录中,您将找到所有 GNU 实用程序的二进制文件,包括 dd(已测试工作)
由于 \\dev\\sda\\ 不是一个东西,所以关于在 Windows 中使用的一些进一步说明:
$DiskDrives = Gwmi Win32_diskdrive | select DeviceID,BytesPerSector,Index,Caption,InterfaceType,Size,TotalSectors,SerialNumber | Out-GridView -OutputMode Multiple -Title 'Select Source Drive(s)'
$BaseOutputPath = 'D:\'
$DiskDrives | %{
. ('C:\Program Files\Git\usr\bin\dd.exe if={0} of={1} bs={2}' -f $_.DeviceID,(-join($BaseOutputPath,(-
join($Env:ComputerName,$_.Index)),'.img')),$_.BytesPerSector)
}
包含的文件名逻辑只是一个占位符,如果您希望它提示您输入文件名/路径,您可以使用对Read-Host
的调用替换该括号。
这有点烦人,但您确实必须使用 WMI,因为Get-Disk
返回的值似乎不起作用。
您可能已经知道 Windows 上的cygwin
支持一些 Linux 命令,包括dd
。 我曾多次使用它来复制磁盘并将 ISO 加载到 USB,并且它运行良好。
Windows 10 现在带有 linux。 适用于 Linux 的 Windows 子系统。 您可以将其作为一项功能启用。 您甚至可以在 1903 年和 1909 年获得带有真实内核的 WSL 2: https : //devblogs.microsoft.com/commandline/whats-new-in-the-windows-subsystem-for-linux-september-2020/
Get-CimInstance -ClassName Win32_DiskDrive | Format-List -Property DeviceID,BytesPerSector,Index,Caption,InterfaceType,Size,TotalSectors,SerialNumber
跟进@Chirishman 的回答,对于 Powershell 7.2, Gwmi
可能从 powershell 中丢失。
获取DeviceId
和其他信息的替代命令如上所述可用。
然后你可以使用dd if={DeviceId} of=<target_file>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.