繁体   English   中英

Windows Powershell 相当于 dd 的命令行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM