;USB에windows_ISO파일을설치파일만들기 ;https://windowsforum.kr/lecture/18925455 ;그냥 윈도우에 있는 명령어만으로 파워쉘에서 실행되는
이전
다음
작성자 정보
- 11qkr 작성
- 작성일
본문
;USB에windows_ISO파일을설치파일만들기
;https://windowsforum.kr/lecture/18925455
;그냥 윈도우에 있는 명령어만으로 파워쉘에서 실행되는 스크립트로 짜봤습니다.
;사전에 USB에 드라이브 포맷 준비만 해놓고,밑의 전체 코드를 파워쉘[관리자]에 치면 됩니다.
Function Get-IsoLocation
{
[CmdletBinding()]
[OutputType([string])]
Param
(
[Parameter(
Mandatory = $false,
Position = 0)]
[String]$WindowTitle = "Opening For .ISO",
[Parameter(
Mandatory = $true,
ValueFromPipelineByPropertyName = $true,
HelpMessage = "Initial Directory for browsing",
Position = 1)]
[String]$RootDir
)
Add-Type -AssemblyName System.Windows.Forms
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.Title = $WindowTitle
if (-Not [String]::IsNullOrWhiteSpace($RootDir))
{
$OpenFileDialog.InitialDirectory = $RootDir
}
$OpenFileDialog.ShowHelp = $true
$OpenFileDialog.ShowDialog() | Out-Null
return $OpenFileDialog.Filename
}
Write-Host "`n"
Write-Host " ISO 파일을 찾을, 첫 시작위치를 입력하세요" -ForeGroundColor Red
Write-Host "`n"
Write-Host " ==> " -noNewline
$InputDir = Read-Host
# $InputDir = (Read-Host -prompt "`n`nISO 파일을 찾을, 첫 시작위치를 입력하세요`n`n")
$IsoPath = Get-IsoLocation -RootDir $InputDir
$Volumes = (Get-Volume).Where({$_.DriveLetter}).DriveLetter
Mount-DiskImage -ImagePath $IsoPath
$ISO = (Compare-Object -ReferenceObject $Volumes -DifferenceObject (Get-Volume).Where({$_.DriveLetter}).DriveLetter).InputObject
Start-Sleep 2
Write-Host "`n"
Write-Host " .iso내 모든 파일을 임시복사할 폴더를 만듭니다." -ForeGroundColor Red
Write-Host " `n윈도우 설치 USB에 다시 복사한후 임시폴더는 삭제됩니다." -ForeGroundColor Red
Write-Host " `nC드라이브내 원하는 위치를 입력하세요" -ForeGroundColor Red
Write-Host "`n"
Write-Host " ==> " -noNewline
$InputTempFolder = Read-Host
New-Item $InputTempFolder -type directory -ver
Start-Sleep 2
robocopy "$($ISO):\" $InputTempFolder /e /copyall
Set-Location -Path "$($ISO):\boot"
Write-Host "`n"
Write-Host " 모든 설치파일이 복사되고,부팅 가능하게 만들`n" -ForeGroundColor Red
Write-Host " 사전의 포맷 준비된 USB드라이브 문자를 입력하세요`n" -ForeGroundColor Red
Write-Host " 예> J "
Write-Host " 문자만 쓰면 됩니다." -ForeGroundColor Red
Write-Host "`n"
Write-Host " ==> " -noNewline
$USBLetter = Read-Host
bootsect.exe /nt60 "$($USBLetter):"
Dism /Split-Image /ImageFile:"$InputTempFolder\sources\install.wim" /SWMFile:"$InputTempFolder\sources\install.swm" /FileSize:3500
gci -path "$InputTempFolder\sources\install.wim" | set-itemproperty -name IsReadOnly -value $false
Remove-Item $InputTempFolder\sources\install.wim -ver
Start-Sleep 2
robocopy $InputTempFolder "$($USBLetter):\" /e /copyall
Start-Sleep 2
Dismount-Diskimage -imagepath $IsoPath
Set-Location $env:UserProfile
Remove-Item $InputTempFolder -r -force -ver
;전 사전의 포맷을 해놨고, 포맷은 스크립트에 넣지 않았습니다.
;https://windowsforum.kr/lecture/18925455
;그냥 윈도우에 있는 명령어만으로 파워쉘에서 실행되는 스크립트로 짜봤습니다.
;사전에 USB에 드라이브 포맷 준비만 해놓고,밑의 전체 코드를 파워쉘[관리자]에 치면 됩니다.
Function Get-IsoLocation
{
[CmdletBinding()]
[OutputType([string])]
Param
(
[Parameter(
Mandatory = $false,
Position = 0)]
[String]$WindowTitle = "Opening For .ISO",
[Parameter(
Mandatory = $true,
ValueFromPipelineByPropertyName = $true,
HelpMessage = "Initial Directory for browsing",
Position = 1)]
[String]$RootDir
)
Add-Type -AssemblyName System.Windows.Forms
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.Title = $WindowTitle
if (-Not [String]::IsNullOrWhiteSpace($RootDir))
{
$OpenFileDialog.InitialDirectory = $RootDir
}
$OpenFileDialog.ShowHelp = $true
$OpenFileDialog.ShowDialog() | Out-Null
return $OpenFileDialog.Filename
}
Write-Host "`n"
Write-Host " ISO 파일을 찾을, 첫 시작위치를 입력하세요" -ForeGroundColor Red
Write-Host "`n"
Write-Host " ==> " -noNewline
$InputDir = Read-Host
# $InputDir = (Read-Host -prompt "`n`nISO 파일을 찾을, 첫 시작위치를 입력하세요`n`n")
$IsoPath = Get-IsoLocation -RootDir $InputDir
$Volumes = (Get-Volume).Where({$_.DriveLetter}).DriveLetter
Mount-DiskImage -ImagePath $IsoPath
$ISO = (Compare-Object -ReferenceObject $Volumes -DifferenceObject (Get-Volume).Where({$_.DriveLetter}).DriveLetter).InputObject
Start-Sleep 2
Write-Host "`n"
Write-Host " .iso내 모든 파일을 임시복사할 폴더를 만듭니다." -ForeGroundColor Red
Write-Host " `n윈도우 설치 USB에 다시 복사한후 임시폴더는 삭제됩니다." -ForeGroundColor Red
Write-Host " `nC드라이브내 원하는 위치를 입력하세요" -ForeGroundColor Red
Write-Host "`n"
Write-Host " ==> " -noNewline
$InputTempFolder = Read-Host
New-Item $InputTempFolder -type directory -ver
Start-Sleep 2
robocopy "$($ISO):\" $InputTempFolder /e /copyall
Set-Location -Path "$($ISO):\boot"
Write-Host "`n"
Write-Host " 모든 설치파일이 복사되고,부팅 가능하게 만들`n" -ForeGroundColor Red
Write-Host " 사전의 포맷 준비된 USB드라이브 문자를 입력하세요`n" -ForeGroundColor Red
Write-Host " 예> J "
Write-Host " 문자만 쓰면 됩니다." -ForeGroundColor Red
Write-Host "`n"
Write-Host " ==> " -noNewline
$USBLetter = Read-Host
bootsect.exe /nt60 "$($USBLetter):"
Dism /Split-Image /ImageFile:"$InputTempFolder\sources\install.wim" /SWMFile:"$InputTempFolder\sources\install.swm" /FileSize:3500
gci -path "$InputTempFolder\sources\install.wim" | set-itemproperty -name IsReadOnly -value $false
Remove-Item $InputTempFolder\sources\install.wim -ver
Start-Sleep 2
robocopy $InputTempFolder "$($USBLetter):\" /e /copyall
Start-Sleep 2
Dismount-Diskimage -imagepath $IsoPath
Set-Location $env:UserProfile
Remove-Item $InputTempFolder -r -force -ver
;전 사전의 포맷을 해놨고, 포맷은 스크립트에 넣지 않았습니다.
관련자료
-
이전
-
다음
댓글 0
등록된 댓글이 없습니다.