【问题标题】:Windows Powershell command line equivalent of ddWindows Powershell 命令行等效于 dd
【发布时间】:2016-10-02 13:20:12
【问题描述】:

我正在编写一个 Powershell 脚本来制作驱动器的原始副本,但我一直无法找到完成此操作的方法。

在 Linux 上,我会使用 'dd' 来执行此复制。

有一些工具可以在 Windows 上执行此操作,但我无法直接从命令行控制。 (都有GUI界面)

有没有办法通过 Powershell 制作驱动器的物理副本?

谢谢。

【问题讨论】:

  • dd 有多种 Win32 端口(尽管并非所有端口都经过维护以适用于最新版本的 Windows)。没有用于此的本地内置 PowerShell cmdlet,虽然您可以想象通过手动滚动原始磁盘访问来做到这一点,但这几乎可以肯定是一个坏主意(主要是因为 PowerShell 所基于的 .NET 没有提供简单的方法去做这个)。 Windows确实有与原始磁盘卷对应的文件,就像 Linux 一样,但访问它们要复杂得多。
  • @JeroenMostert 这也可能是答案:没有开箱即用的东西,但有/可能有 3rd 方库可以做到这一点......
  • 您实际上想要完成什么? dd 样式的图像在 Windows 环境中通常没有用处。您可以使用 diskpart 创建 VHD,或使用 diskpartMount-DiskImage (Win10) 从 .iso 重新分区、格式化和复制文件到 USB。

标签: windows powershell dd


【解决方案1】:

Windows 10 现在带有 linux。适用于 Linux 的 Windows 子系统。您可以将其作为一项功能启用。您甚至可以在 1903 年和 1909 年获得带有真正内核的 WSL 2:https://devblogs.microsoft.com/commandline/whats-new-in-the-windows-subsystem-for-linux-september-2020/

【讨论】:

    【解决方案2】:

    我自己已经尝试了一段时间,终于找到了一个很好的答案。

    Windows 版 Git 附带一整套 GNU 核心实用程序(已更新而不是您可以单独找到的),包括 dd!

    只需安装适用于 Windows 的 Git 或提取可移植版本,从 git\usr\bin\ 的安装目录中,您将找到所有 GNU 实用程序的二进制文件,包括 dd(已测试工作)

    一些关于在 windows 中使用的进一步说明,因为 \dev\sda\ 不是一个东西:

    $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 返回的值似乎不起作用。

    【讨论】:

    • 你是不是缺少 Out-GridView 上的-PassThru 参数?如果没有它,它通常应该只显示通过管道传输给它的内容,而不是返回任何对象。
    【解决方案3】:

    您可能已经知道 Windows 上的 cygwin 支持一些 Linux 命令,包括 dd。我曾多次使用它来复制磁盘并将 ISO 加载到 USB 中,并且效果很好。

    【讨论】:

    • TMO 适合我。过多的开销。但我明白你的意思。同时,我不能对此投票,因为 ti 没有按书面回答问题(当我搜索几乎完全正确的标题时,它出现在 Google 中)
    猜你喜欢
    • 2012-09-01
    • 2016-01-26
    • 2018-01-15
    • 2012-08-29
    • 1970-01-01
    • 2011-05-24
    • 2018-01-11
    • 1970-01-01
    • 2010-09-08
    相关资源
    最近更新 更多