Создание загрузочных носителей USB без UEFI исключительно в PowerShell - PullRequest
0 голосов
/ 14 мая 2019

Итак, мне было поручено создать сценарий, позволяющий легко копировать ISO-образ на USB с помощью PowerShell. Я сделал это как можно более надежным. Однако есть одно место, где я нахожусь в тупике, и это связано с Legacy BIOS. Прямо сейчас это отлично работает на UEFI. Тем не менее, у нас есть несколько отделов, которые все еще используют Legacy BIOS. Это не Windows ISO, и я предпочитаю, чтобы никто не загружал дополнительное программное обеспечение или пакеты.

Я уверен, что единственное, что действительно нужно изменить, - это флаги загрузочного сектора. Однако, когда я использовал / nt52 и / mbr, я не могу загрузить носитель.

    $ISOPathforDeploy = "\\someshare\custom.iso"
    $PartitionType = "FAT32"
    ####################################
    #Please only change variable above. 
    #Do not edit code below this line.
    ####################################
    $Results = Get-Disk |
    Where-Object BusType -eq USB |
    Out-GridView -Title 'Select USB Drive to Format' -OutputMode Single |
    Clear-Disk -RemoveData -RemoveOEM -Confirm:$false -PassThru |
    New-Partition -UseMaximumSize -IsActive -AssignDriveLetter |
    Format-Volume -FileSystem $PartitionType
    $Volumes = (Get-Volume).Where( { $_.DriveLetter }).DriveLetter
    Mount-DiskImage -ImagePath $ISOPathforDeploy
    $ISO = (Compare-Object -ReferenceObject $Volumes -DifferenceObject (Get-Volume).Where( { $_.DriveLetter }).DriveLetter).InputObject
    Set-Location -Path "$($ISO):\boot"
    bootsect.exe /nt60 "$($Results.DriveLetter):"
    Copy-Item -Path "$($ISO):\*" -Destination "$($Results.DriveLetter):" -Recurse -Verbose
    Dismount-DiskImage -ImagePath $ISOPathforDeploy
...