Windows To Go – chcesz?


Pisalem kiedys o Windows To Go, i od tego czasu zmienilo sie tyle, ze sam jestem aktywnym uzytkownikiem tej funkcjonalnosci. Krótko podsumowujac dotychczasowe doswiadczenie, napisze tylko: podoba mi sie. Pewnie, gdybym nie mial takiej mozliwosci jakos poradzilbym sobie inaczej, ale skoro mam – jestem zadowolony. Dziala, sprawdza sie, Office 2013 smiga… czego chciec wiecej?

Do zmian dotyczacych WTG, które zaszly przez ostatnie miesiace, dodac mozna jeszcze jedna: istnieje wiecej oficjalnie wspieranych urzadzen. Bo choc niemal kazdy odpowiednio duzy pendrive jest fizycznie zdolny do obsluzenia Windows To Go, to jednak wsparcie otrzymuja tylko te, które sa odpowiednio wydajne. Tak naprawde, myslac o pendrive do WTG, raczej nalezy traktowac go jako opakowany w postac pendrive dysk SSD niz jako typowa pamiec flash. Róznica predkosci potrafi byc znaczaca i choc nie przyszlo mi dotad do glowy sprawdzic tego samodzielnie, to widzialem "screenshoty", na których ciagly transfer wynosil okolo 200MB/s.

Jak pewnie czesc z Was wie, w tym tygodniu, w Redmond odbywa sie MVP Summit – coroczna konferencja, w ramach której pasjonaci technologii Microsoft pompowani sa nowa wiedza i róznymi innymi rzeczami. Jak zapewne wie inna czesc z Was – jestem jednym z ekspertów w programie Springboard Technical Experts Panel. I zlozenie jednego faktu z drugim sprawilo, ze dostalem nowy, ladny i superszybki pendrive DataTraveler Workspace. I choc bardzo mnie to ucieszylo, to jednak dwa pendrive z WTG, to troche za duzo. Dlatego mam propozycje: moze ktos chce taki pendrive? Oddam w dobre rece temu, kto:

  • Pobierze z portalu Springboard dziewiecdziesieciodniowa wersje ewaluacyjna Windows 8 Enterprise x64
  • Zapisze ja w pliku C:\WTG\Win8Eval.iso
  • W komentarzu do niniejszego wpisu pierwszy opublikuje skrypt (preferowany PowerShell), który uruchomiony na swiezo zainstalowanym Windows 8 Enterprise x64 zawierajacym plik C:\WTG\Win8Eval.iso sprawi, ze wetkniety w port USB DataTraveler Workspace stanie sie dyskiem Windows To Go, zabezpieczonym przy pomocy BitLockera z haslem "TechNet". Mozna dla uproszczenia zalozyc, ze w komputerze jest tylko jeden dysk twardy skonfigurowany domyslnie podczas instalacji Windows 8.

Ktos chetny? Zapraszam 🙂

I jeszcze tak zwany drobny druk:

  1. Po raz kolejny podkreslam, ze nie jestem w zaden formalny sposób zwiazany z Microsoft. To co tu pisze i jaki konkursy wymyslam, to czysta prywata. Pendrive dostalem w prezencie i chetnie przekaze go komus, kto go potrzebuje i potrafi cos w Windows 8 "wystrugac".
  2. Komentarze do bloga sa moderowane, co oznacza, ze calkiem sporo skryptów moze zostac przeslanych a zaden sie nie pojawi online. Jak je zatwierdze, to nagle bedzie ich na przyklad dziesiec na raz. Oznacza to, ze ktos moze nic nie widziec, opublikowac swój skrypt a potem dowiedziec sie, ze wcale nie byl pierwszy.
  3. Wygra ten skrypt, który ocenie jako wystarczajaco dobry. Ostateczna weryfikacja poprawnosci rozwiazania bedzie przetestowanie go na systemie opisanym wczesniej. Jezeli powstanie dzialajacy dysk WTG, to pewnie skrypt jest OK.
  4. Skrypt uruchamiac bede z uprawnieniami administracyjnymi.
  5. Zakladam, ze Windows 8 ma wbudowane sterowniki pozwalajace na prace na moim sprzecie.
  6. Istniejaca na pendrive zawartosc nie jest dla mnie istotna i moze zostac usunieta przez skrypt, jezeli jego autor ma taka potrzebe.
  7. Powstaly dysk WTG nie musi byc aktywowany ani skonfigurowany. Stan, w którym po zabootowaniu wyswietla sie kreator instalacji, jest dla mnie akceptowalny pod warunkiem, ze koncowy uzytkownik moze sobie "doklikac" instalacje do konca na dowolnym wspieranym przez Windows 8 x64 komputerze majacym lacznosc z Internetem.
  8. Konfiguracja srodowiska nie bedzie zawierala celowych utrudnien (na przyklad nie wylacze obslugi USB w polisach) ale i nie zamierzam w zaden sposób jej zmieniac tylko po to, zeby stworzyc skryptowi dogodne warunki, bez których costam nie zadziala.
  9. Nie planuje odwolywania mojego mini-konkursu, ale zastrzegam sobie do tego prawo. A nuz pendrive spali sie w czasie testów? Albo wydarzy sie cos innego, czego nie potrafie teraz przewidziec?
  10. Komentarze postaram sie regularnie akceptowac, ale ewentualne przeslane rozwiazania sprawdze najwczesniej za pare dni. Niestety moja doba tez ma tylko 24h…

Powodzenia!

Autor: Grzegorz Tworek [MVP]

PS Z komentarzy widze, ze wymagane haslo BitLockera moze byc zbyt proste. Zgadzam sie na inne, chocby takie jak "TechNet123".

Comments (14)

  1. Anonymous says:

    Hasło na BitLocker to TechNet123, bo TechNet nie spełnia wymagań ;).

    $Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }

    Clear-Disk –InputObject $Disk[0] -RemoveData -Confirm:$false

    Initialize-Disk –InputObject $Disk[0] -PartitionStyle MBR

    $SystemPartition = New-Partition –InputObject $Disk[0] -Size (350MB) -IsActive

    Format-Volume -NewFileSystemLabel "UFD-System" -FileSystem FAT32 -Partition $SystemPartition -Confirm:$false

    $OSPartition = New-Partition –InputObject $Disk[0] -UseMaximumSize

    Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS -Partition $OSPartition -Confirm:$false

    Set-Partition -InputObject $SystemPartition -NewDriveLetter "S"

    Set-Partition -InputObject $OSPartition -NewDriveLetter "W"

    Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE

    Mount-DiskImage -ImagePath "C:WTGWin8Eval.iso"

    $IsoDriveLetter = (Get-DiskImage -ImagePath "C:WTGWin8Eval.iso" | Get-Volume).DriveLetter

    dism /apply-image /imagefile:"$($IsoDriveLetter):sourcesinstall.wim" /index:1 /applydir:W:

    Dismount-DiskImage -ImagePath C:WTGWin8Eval.iso

    W:WindowsSystem32bcdboot W:Windows /f ALL /s S:

    $spwd = ConvertTo-SecureString -String "TechNet123" -AsplainText –Force

    Enable-BitLocker W: -PasswordProtector $spwd –UsedSpaceOnly

  2. Anonymous says:

    @Mateusz: Polecam się na przyszłość!

    @AdrSzw: Jako żywo ani śladu po nim nie ma… Myślisz, że zostałby uznany za wystarczająco dobry? 🙂

  3. Anonymous says:

    Ojjj zapomniałem widzę włączyć BitLockera – umknęło mi 🙂 Ale Łukasz nie zapomniał 🙂

  4. Anonymous says:

    Nie ma czasu – nie ma pendrive… ;>

  5. Anonymous says:

    @Mateusz: Uznałem, że hasło TechNet to tak naprawdę mój błąd i zmieniłem w twoim skrypcie na TechNet123. Malutki minusik za to, że nie wyłapałeś tego, ale bez wpływu na wynik. Twój skrypt ma jednak inną istotną wadę: założyłeś, że zamontowane ISO pojawi się pod literką D:. Uruchomiłem twój skrypt i okazało się, że u mnie nie jest to D:, bo D: jest zajęte przez napęd optyczny. Skrypt nie zadziałał. Jak napisałem – nie będę utrudniał, ale konfiguracji komputera zmieniać nic "pod skrypt" też nie chcę. Z żalem uznaję skrypt za nie dość dobry.

    @Łukasz.Kałużny: skrypt zadziałał. Niewielka różnica w postaci $IsoDriveLetter okazała się znacząca i subiektywnie uznałem, że to jest pierwsze (i jedyne) wystarczająco dobre rozwiązanie, co oznacza że pendrive leci do Ciebie.

    Pozostałe rozwiązania również mają problem z literką w poleceniu DISM a poza tym nie mają szyfrowania BitLockerem. A przy Windows To Go, to naprawdę istotna rzecz. Dlatego również nie mogę ich uznać za dość dobre.

    Jednoosobowe jury zamyka posiedzenie nie przewidując procedury odwoławczej 😉

    Dziękuję uczestnikom za rywalizację na niezłym poziomie i zapraszam w przyszłości do kolejnych zabaw!

  6. Anonymous says:

    $Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }

    Clear-Disk –InputObject $Disk[0] -RemoveData

    Initialize-Disk –InputObject $Disk[0] -PartitionStyle MBR

    $Systemn = New-Partition –InputObject $Disk[0] -Size (350MB) -IsActive

    Format-Volume -NewFileSystemLabel "UFD-System" -FileSystem FAT32 -Partition $System

    $OSPart = New-Partition –InputObject $Disk[0] -UseMaximumSize

    Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS -Partition $OSPart

    Set-Partition -InputObject $System -NewDriveLetter "N"

    Set-Partition -InputObject $OSPart -NewDriveLetter "O"

    Set-Partition -InputObject $OSPart -NoDefaultDriveLetter $TRUE

    Mount-DiskImage -ImagePath "C:WTGWin8Eval.iso"

    dism /apply-image /imagefile:e:I:sourcesinstall.WIM /index:1 /applydir

    c:WindowsSystem32bcdboot o:Windows /f ALL /s N:

    Dismount-DiskImage -ImagePath "C:WTGWin8Eval.iso"

  7. Anonymous says:

    Wcześniej wkradły mi się 2 drobne błędy… Teraz powinno być lepiej 🙂

    $Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }

    Clear-Disk –InputObject $Disk[0] -RemoveData

    Initialize-Disk –InputObject $Disk[0] -PartitionStyle MBR

    $Systemn = New-Partition –InputObject $Disk[0] -Size (350MB) -IsActive

    Format-Volume -NewFileSystemLabel "UFD-System" -FileSystem FAT32 -Partition $System

    $OSPart = New-Partition –InputObject $Disk[0] -UseMaximumSize

    Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS -Partition $OSPart

    Set-Partition -InputObject $System -NewDriveLetter "N"

    Set-Partition -InputObject $OSPart -NewDriveLetter "O"

    Set-Partition -InputObject $OSPart -NoDefaultDriveLetter $TRUE

    Mount-DiskImage -ImagePath "C:WTGWin8Eval.iso"

    dism /apply-image /imagefile:e:sourcesinstall.WIM /index:1 /applydir:O:

    c:WindowsSystem32bcdboot o:Windows /f ALL /s N:

    Dismount-DiskImage -ImagePath "C:WTGWin8Eval.iso"

  8. marek says:

    ehh, gdybym mial troszkevwiecej czasu to bym cos wystrugał , pendrive *** ! 🙂

  9. Marek K says:

    $Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }

    Clear-Disk –InputObject $Disk[0] -RemoveData

    Initialize-Disk –InputObject $Disk[0] -PartitionStyle MBR

    $Systemn = New-Partition –InputObject $Disk[0] -Size (350MB) -IsActive

    Format-Volume -NewFileSystemLabel "UFD-System" -FileSystem FAT32 -Partition $System

    $OSPart = New-Partition –InputObject $Disk[0] -UseMaximumSize

    Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS -Partition $OSPart

    Set-Partition -InputObject $System -NewDriveLetter "N"

    Set-Partition -InputObject $OSPart -NewDriveLetter "O"

    Set-Partition -InputObject $OSPart -NoDefaultDriveLetter $TRUE

    Mount-DiskImage -ImagePath "C:WTGWin8Eval.iso"

    dism /apply-image /imagefile:e:I:sourcesinstall.WIM /index:1 /applydir

    c:WindowsSystem32bcdboot o:Windows /f ALL /s N:

    Dismount-DiskImage -ImagePath "C:WTGWin8Eval.iso"

  10. Mateusz says:

    Wysyłam ponownie bo po pierwszym wysłaniu nie otrzymałem info, że zostało przesłane.

    W dużej części wsparłem się źródłami z technet technet.microsoft.com/…/hh832022.aspx

    Co prawda nie testowane na pendrive, bo takowego nie mam, ale zadziałało u mnie na wirtualnym dysku.

    #Początek

    #Montowanie obrazu ISO

    Mount-DiskImage -ImagePath "C:WTGWin8Eval.iso"

    #W tym kroku można by było określić, który konkretnie nas pendrive/dysk USB interesuje.

    $Disk = Get-Disk | Where-Object {$_.Size -gt 25Gb -and -not $_.IsBoot }

    #Clear the disk. This will delete any data on the disk. (and will fail if the disk is not yet initialized. If that happens, simply continue with ‘New-Partition…) Validate that this is the correct disk that you want to completely erase.

    #

    # To skip the confirmation prompt, append –confirm:$False

    Clear-Disk –InputObject $Disk[0] -RemoveData -Confirm:$false

    # This command initializes a new MBR disk

    Initialize-Disk –InputObject $Disk[0] -PartitionStyle MBR

    # This command creates a 350 MB system partition

    $SystemPartition = New-Partition –InputObject $Disk[0] -Size (350MB) -IsActive

    # This formats the volume with a FAT32 Filesystem

    # To skip the confirmation dialog, append –Confirm:$False

    Format-Volume -NewFileSystemLabel "UFD-System" -FileSystem FAT32 `

    -Partition $SystemPartition -Confirm:$false

    # This command creates the Windows volume using the maximum space available on the drive. The Windows To Go drive should not be used for other file storage.

    $OSPartition = New-Partition –InputObject $Disk[0] -UseMaximumSize

    Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS `

    -Partition $OSPartition -Confirm:$false

    # This command assigns drive letters to the new drive, the drive letters chosen should not already be in use.

    Set-Partition -InputObject $SystemPartition -NewDriveLetter "S"

    Set-Partition -InputObject $OSPartition -NewDriveLetter "W"

    # This command toggles the NODEFAULTDRIVELETTER flag on the partition which prevents drive letters being assigned to either partition when inserted into a different computer.

    Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE

    dism /apply-image /imagefile:D:sourcesinstall.wim /index:1 /applydir:W:

    W:WindowsSystem32bcdboot W:Windows /f ALL /s S:

    $BitlockerrecoveryProtection = Add-BitLockerKeyProtector W: -RecoveryPasswordProtector

    $RecoveryPassword = $BitlockerRecoveryProtector.KeyProtector.RecoveryPassword

    $RecoveryPassword > C:WTGWTG-Demo_Bitlocker_Recovery_Password.txt

    $spwd = ConvertTo-SecureString -String TechNet -AsplainText –Force

    Enable-BitLocker W: -PasswordProtector $spwd

    #Koniec

  11. Adrszw says:

    Ja swoj koncze – jeszcze z 15minut i mysle ze bedzie ok

  12. Mateusz says:

    Grzegorz,

    jeżeli mój skrypt jest z hasłem "TechNet", to mam go poprawić czy to jest akceptowalne przez Ciebie?

    Rozumiem, że i u Ciebie może z hasłem "TechNet" nie zadziałać, ze względu, że hasło jest zbyt krótkie.

  13. Mateusz says:

    Zgubiło mnie to, że w wirtualnej maszynie nie miałem napędu optycznego.

    W pamięci mi umknęło, że gdy montujemy iso w Windows 8, nie montuje on do fizycznego napędu, tylko tworzy nową instancję.

    Cóż. Ja to zapamiętam teraz, a Łukaszowi gratuluję.

    Ukłon w stronę Grzesia. Za chęć zorganizowania takiego konkursu.

    Dziękuję.

  14. AdrSzw says:

    PS wyglada na to ze moj skrypt nie zostal opublikowany a wydaje mi sie ze byl nieco wczesniej

    no coz 🙂 brak odwolania to brak odwolania

Skip to main content