• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Bootable Windows USB Stick with UEFI support

Введение
Приветствую всех на форуме
Сегодня мне потребовалось записать Windows 10 на флешку. Так как я не особо люблю пользоваться сторонним софтом, все что можно сделать подручными средствами я пытаюсь сделать сам. Обычно я готовил USB Stick с помощью diskpart и robocopy, но тут я подумал а почему бы не автоматизировать это в виде скрипта. И сразу же я понял что diskpart мне не подходит :).

Bootable Windows USB Stick или PowerShell вместо DiskPart
Вот что из этого получилось. PowerShell Script - готовит флешку и пишет на него Windows, с полноценной поддержкой UEFI.

gushmazuko/WinToUsb

Python:
<#
.SYNOPSIS
    This script create a Bootable Windows USB Stick with UEFI support
 
.NOTES
    Function   : WinToUsb
    File Name  : WinToUsb.ps1
    Author     : Gushmazuko

.LINK
    https://github.com/gushmazuko/WinToUsb

.EXAMPLE
    #Run PowerShell as Admin
    powershell -exec bypass
    Import-Module WinToUsb.ps1
    WinToUsb
 
    #OR
    #Run PowerShell as Admin
    powershell -exec bypass "iwr -useb 'https://raw.githubusercontent.com/gushmazuko/WinToUsb/master/WinToUsb.ps1'|iex"
#>

function WinToUSB(){
    clear

    #Show mounted disks
    Get-Disk
    #Select Disk
    Write-Host "`nWARNING! BE VERY CAREFUL WHEN SELECTING A DISK" -ForegroundColor Red
    Do {Write-Host " - [Select Usb Flash to erase] : " -ForegroundColor Green -NoNewline
        $DiskNumber = Read-Host}
        While ($DiskNumber -eq "")
 
    #Erase all data on the flash drive
    Get-Disk $DiskNumber | Clear-Disk -RemoveData

    #Create new partition, assign a letter & format it to FAT32
    New-Partition -DiskNumber $DiskNumber -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem FAT32
 
    #Set a partition active so the BIOS/UEFI can boot to it
    Set-Partition -DiskNumber $DiskNumber -PartitionNumber 1 -IsActive $true
 
    #Copying Windows files to USB drive
     
        #Getting USB Drive Path
        $UsbLetter = Get-Partition -DiskNumber $DiskNumber | select -ExpandProperty DriveLetter
        $UsbPath = "$($UsbLetter):\"
     
        #Getting Windows Files Path
        Do {Write-Host " - [Write path where Windows Image is mounted] : " -ForegroundColor Green -NoNewline
            $WinPath = Read-Host}
            While ($WinPath -eq "")
 
    robocopy $WinPath $UsbPath /mir
 
    cd $WinPath\boot
    .\bootsect.exe /nt60 "$($UsbLetter):"
}


Я специально не реализовал монтирование ISO образа внутри скрипта, чтобы сохранить универсальность и сделать возможным его использование в Windows 7.

На этом все, спасибо за внимание!
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!