Windows Server

Moje webcasty o Windows Server Foundation

Na TechNet Edge pojawiły się moje dwa webcasty o Windows Server 2008 R2 Foundation. Na początek warto przedstawić co to takiego. Foundation to wersja Windows Server 2008 R2 dedykowana dla bardzo małych organizacji, umożliwia stworzenie do 15 kont użytkowników. Z założenia ma być pierwszym lub jedynym serwerem w firmie. Rozprowadzany jest przez partnerów OEM wraz ze sprzętem. Ma stanowić fundament dla środowiska IT małej firmy. W przypadku rozwoju firmy i potrzeby większej ilości kont użytkowników można przeprowadzić upgrade to pełnej wersji Windows Server.

Pierwszy z webcastów ma tytuł: Windows Server Foundation: Serwer plików + Archwizacja. Webcast prezentuje w jaki sposób wykorzystywać serwer plików i w jaki sposób skonfigurować backup serwera w małej firmie, można go obejrzeć w okienku poniżej lub pobrać z Edge.

Mój drugi webcast ma tytuł: Windows Server Foundation: Dostęp zdalny. Opisuje podstawowe metody zdalnego zarządzania Windows Server 2008 R2 Foundation, można go również pobrać z Edge.

Zapraszam do obejrzenia też innych polskich webcastów dotyczących Foundation, można je obejrzeć pod tym adresem.

źródła, poza własnym doświadczeniem:

Windows Server 2008 R2 Foundation – witryna anglojęzyczna

Windows Server 2008 R2 Foundation – witryna polskojęzyczna

TechNet Edge – polskie webcasty

TFS: Problem po przeniesieniu Data-Tier

Przeniosłem bazy danych SQL na których działa TFS na innego SQL i zaczęły się problemy:) Po poprawnym przeniesieniu baz danych, skonfigurowaniu Reporting Services, uzupełnieniu konfiguracji o nową nazwę Data-Tier, przebudowaniu kostki Team System i po przeniesieniu baz danych WSS 3.0 wszystko wydaje się działać poprawnie. Co prawda cała procedura jest dobrze udokumentowana to jednak wydaje mi się, że zapomniano w niej jednak o jednej rzeczy.

Po zakończeniu operacji od czasu do czasu w event logu zaczął pojawiać się następujący wpis:

Event Type: Information
Event Source: TFS Services
Event Category: None
Event ID: 3007
Date:  2/12/2010
Time:  9:09:27 AM
User:  N/A
Computer: MACHINENAME
Description:
TF53010: The following error has occurred in a Team Foundation component or extension:
Date (UTC): 2/12/2010 8:09:27 AM
Machine: MACHINENAME
Application Domain: /LM/W3SVC/3/Root/Services-2-129104063734642635
Assembly: Microsoft.TeamFoundation.Server, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727
Process Details:
Process Name: w3wp
Process Id: 1836
Thread Id: 3168
Account name: DOMAINNAME\TFSSERVICE

Detailed Message: TF205005: Team Foundation Server is unable to locate one or more of the installed error messages. Please repair the installation from Programs and Features in Control Panel to fix this problem. For more information, see “How to: Repair Team Foundation Server” in the Team Foundation Server Installation Guide that can be downloaded from the Microsoft Web site (http://go.microsoft.com/fwlink/?LinkID=82562 ). Detailed information :Error 400006, severity 16, state 1 was raised, but no message with that error number was found in sys.messages. If error is larger than 50000, make sure the user-defined message is added using sp_addmessage.
Web Request Details
Url:
http://bbtfs01:8080/Services/v1.0/GroupSecurityService.asmx [method: POST]
User Agent: Team Foundation (w3wp.exe[Integration], 9.0.30729.1)
Headers: Content-Length=475&Content-Type=text%2fxml%3b+charset%3dutf-8&Accept-Encoding=gzip&Accept-Language=en-US&Expect=100-continue&Host=bbtfs01%3a8080&User-Agent=Team+Foundation+(w3wp.exe%5bIntegration%5d%2c+9.0.30729.1)&X-TFS-Version=1.0.0.0&X-TFS-Session=50a2974e-efa9-4138-b357-f327267aa27b&SOAPAction=%22http%3a%2f%2fschemas.microsoft.com%2fTeamFoundation%2f2005%2f06%2fServices%2fGroupSecurity%2f03%2fReadIdentity%22
Path: /Services/v1.0/GroupSecurityService.asmx
Local Request: True
Host Address: 10.10.10.181
User: DOMAINNAME\TFSSERVICE [authentication type: NTLM]

Exception Message: TF205005: Team Foundation Server is unable to locate one or more of the installed error messages. Please repair the installation from Programs and Features in Control Panel to fix this problem. For more information, see “How to: Repair Team Foundation Server” in the Team Foundation Server Installation Guide that can be downloaded from the Microsoft Web site (http://go.microsoft.com/fwlink/?LinkID=82562 ). Detailed information :Error 400006, severity 16, state 1 was raised, but no message with that error number was found in sys.messages. If error is larger than 50000, make sure the user-defined message is added using sp_addmessage. (type DatabaseConfigurationException)
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Po dość długim główkowaniu i szukaniu udało mi się znaleźć rozwiązanie tego problemu nieco odmienne niż to zasugerowane w powyższej informacji (nie zasugerowałem się powyższym z powodu dużej customizacji na instacji TFS, którą zarządzam i koniecznością przeinstalowania dodatków). Przyczyną niedogodności jest umieszczenie definicji błędów w bazie danych master (a na ten temat w nie było nic w scenariuszu na MSDN).

Definicje błędów można uzupełnić, poniżej opis jak to zrobić:

  • Wyeksportować definicje ze starego serwera bazodanowego do pliku:

bcp.exe “select * from master.dbo.sysmessages where error > 50000″ queryout “c:\tfs_sysmessages_tfsdatabasehost.txt” -T -c -S oldSQL

  • Utworzyć tymczasową tabelę w bazie na nowym serwerze bazodanowym:

CREATE TABLE [dbo].[tmp_sysmessages](

[error] [int] NOT NULL,

[severity] [tinyint] NULL,

[dlevel] [smallint] NULL,

[description] [nvarchar](255) COLLATE Latin1_General_CI_AS NULL,

[msglangid] [smallint] NOT NULL

) ON [PRIMARY]

  • Zaimportować do niej definicje:

bcp.exe tempDatabase.dbo.tmp_sysmessages in “c:\tfs_sysmessages_tfsdatabasehost.txt” -T -c -S newSQL

  • Przekopiować tymczasową tabelę do używając procedury składowanej sp_addmessage:

DECLARE @Error AS int

DECLARE @Severity AS tinyint

DECLARE @DLevel as smallint

DECLARE @Description as VARCHAR(255)

DECLARE @Msglangid as smallint

DECLARE curMessages CURSOR FOR

SELECT error, severity, dlevel, description, msglangid

FROM tempDatabase.dbo.tmp_sysmessages

WHERE error > 50000

OPEN curMessages

FETCH NEXT FROM curMessages

INTO @Error, @Severity, @DLevel, @Description, @Msglangid

WHILE @@FETCH_STATUS = 0

BEGIN

EXEC sp_addmessage @Error, @Severity, @Description, NULL, ‘TRUE’, ‘replace’

FETCH NEXT FROM curMessages

INTO @Error, @Severity, @DLevel, @Description, @Msglangid

END

CLOSE curMessages

DEALLOCATE curMessages

  • Usunąć tymczasową tabelę tmp_sysmessages.

Po wykonaniu czynności z powyższego opisu komunikaty błędów stają się zrozumiałe;)

źródła:

How to: Move Your Team Foundation Server from One Hardware Configuration to Another – MSDN

How to: Restore Data for Team Foundation – MSDN

Team Foundation Server is unable to locate one or more of the installed error messages error – MSDN Forums

Ku pamięci: Jak pokazać odłączone urządzenia?

Normalnie w Managerze Urządzeń nie widać urządzeń, które są nieobecne w systemie a były zainstalowane wcześniej. Czasem może powodować to trochę zamieszania. Najczęściej się o tym można przekonać kiedy w wirtualnym systemie usuwamy NIC, dodajemy nowy i na nowym ustawimy tą samą bramę domyślną. Zostaniemy ostrzeżeni, że taka brama jest użyta już dla innego interfejsu, jednak go nie widać w urządzeniach:

Odinstalowanie urządzenia, którego nie widać jest mocno utrudnione.

Poniżej opis jak można je pokazać w managerze urządzeń:

  • Uruchomić z uprawnieniami administratora CMD i wydać polecenie:

SET DEVMGR_SHOW_NONPRESENT_DEVICES=1 & START DEVMGMT.MSC

  • Wymusi to pokazanie niepodłączonych urządzeń jako ukrytych i uruchomi “Manager Urządzeń” (Device Manager), należy kliknąć “Widok” (View) i wybrać “Pokaż ukryte urządzenia” (Show hidden devices).

Teraz możemy odinstalować odłączone urządzenia (widoczne są jako wyszarzone – w moim przypadku jest to Microsoft Virtual Machine Bus Network Adapter).

Powyższa metoda działa w Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP, Windows Server 2003 R2, Windows Server 2003, Windows 2000.

źródła:

Device Manager does not display devices that are not connected to the Windows XP-based computer – KB315539

Device Manager Does Not Display Devices Not Currently Present in Windows 2000 – KB241257

Server 2008 – Removing Non-Existing Network Adapters – TechArena Community

Ku pamięci: Floppy disk w Hyper-V

Kiedy ostatnio używaliście dyskietki?

Ja dziś:) Co prawda wirtualnej ale chyba się liczy:)

Jeden z programów jakiego używam na maszynie działającej na Hyper-V wymagał FDD i nie dawał się przekonać, że to archaizm. Najprostszym wyjściem z sytuacji było dodanie obsługi wirtualnego napędu dyskietek do wirtualnej maszyny.

Hyper-V używa plików VFD jako obrazów dyskietek, aby utworzyć plik VFD należy:

  1. Uruchomić Hyper-V Manager;
  2. Przejść do panelu Action;
  3. Wybrać New -> Floppy Disk…;
  4. Pojawi się okno Create Virtual Floppy Disk;
  5. Wybrać jego lokalizację, wprowadzić nazwę pliku dyskietki i wybrać Create.

Utworzony w ten sposób plik VFD można podłączyć jako napęd dyskietek do maszyny wirtualnej działającej na Hyper-V, Virtual Server lub Virtual PC.

źródło: własne doświadczenie

Ku pamięci: TFS Problem z New Team Project Wizard

Przy tworzeniu nowego projektu na Team Foundation Serverze za pomoca Visual Studio Team Explorer 2008 z SP1 pojawił mi się następujący błąd:

Error
TF30004: The New Team Project Wizard encountered an unexpected error while initializing the Microsoft.ProjectCreationWizard.Reporting plug-in.
Explanation
TF30171: The Microsoft.ProjectCreationWizard.Reporting plug-in used to create the new team project could not be initialized and returned the following error: TF30224: Failed to retrieve projects from the report server. Please check that the SQL Server Reporting Services Web and Windows services are running and you have sufficient privileges for creating a project..
User Action
Contact your Team Foundation Server administrator.

Jednocześnie zauważyłem, że przestały się w Team Explorerze wyświetlać raporty. Pierwsza myśl, że coś nie jest w porządku z Reporting Services. Na szczęście mojej obawy nie udało się potwierdzić, na innej maszynie z Team Explorerem raporty pojawiły się prawidłowo, tam też udało się utworzyć projekt. Wniosek, problem dotyczy tylko Team Explorera na jednej maszynie.

Ponowne zainstalowanie SP1 dla Visual Studio Team Explorer 2008 spowodowało, że błąd przestał się pojawiać.

Po poszukiwaniach w Internecie znalazłem, że to dość częsty problem.

źródło poza własnym doświadczeniem:

TFS SQL Reports Red Cross issue and Project creation failed – MSDN Forums

TFS 2008/Visual Studio 2008 TF30004 TF30171 TF30224 Can’t create a new project – MSDN Forums

TF03177: Team Project Creation Failed – The Joy of Code

Gdy VM na Hyper-V R2 traci sieć

Po migracji maszyn do Hyper-V R2 wirtualne maszyny, których NIC są obciążone dużą ilością jednoczesnych połączeń (IIS, ISA itp.) często są dotknięte problemem, że połączenia do WM są zrywane a wirtualny NIC zmienia stan na “disabled”. Dzieje się tak w momencie dużego obciążenia wirtualnego switha, gdy jego bufor (odpowiednik tablicy przełączania) jest pełny w efekcie czego cześć pakietów jest gubiona, generowane są błędy i w efekcie wirtualny interfejs sieciowy zmienia stan na “disabled”.

Na wirtualnych maszynach w logach systemowych  pojawia się następująca informacja:

Event Type: Information
Event Source: netvsc
Event Category: None
Event ID: 4
Date: 2/17/2010
Time: 11:46:07 AM
User: N/A
Computer: MACHINENAME
Description:
The miniport ‘Microsoft Virtual Machine Bus Network Adapter’ reset.

Są trzy metody na rozwiązanie tego problemu:

  • Powiększenie wielkości bufrów VMBus wirtualnych maszyn na których występuje problem z 1MB do 2MB lub 4MB (w dalszej części opiszę to dokładniej). Uznaję to rozwiązanie za preferowane ze względu na najmniejszą inwazyjność fixa w infrastrukturę.
  • Instalacja patcha KB974909 o statusie testowym na maszynach z Hyper-V R2 na których działają maszyny z problemem (w przypadku klastra na wszystkich maszynach w klastrze gdzie wystąpił problem z VM).
  • Zmiana NIC wirtualnej maszyny z Synthetic na Legacy adapter. Rozwiązanie to obniża oczywiście parametry połączenia VM (między innymi jego prędkość do 100Mbps). Ze względu na obniżenie parametrów nie można go uznać za rozwiązanie zalecane w środowiskach produkcyjnych.

Aby powiększyć bufor VMBus wirtualnej maszyny na której występuje problem należy:

  • Przejść do gałezi rejestru: HKLM\SYSTEM\CurrentControlSet\Control\Class\{GUID}\{index}.
  • Aby zidentyfikować jaki GUID ma interfejs wirtualnej maszyny na którym występuje problem:

W przypadku VM na Windows Server 2008/2008 R2 jest to banalne):
Identyfikacja inerfejsu na Windows Server 2003 jest trochę trudniejsza:)

Należy przejśc do HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\NetworkCards\{numer} i odczytać wartość GUID. (rozwiązanie działa również na nowszych systemach).

W przypadku niemożności znalezienia GUID powyższą metodą: przejść do HKLM\SYSTEM\CurrentControlSet\Control\Class\ i wyszukać “Microsoft Virtual Machine Bus Network Adapter” (uwaga – może być kilka interfejsów).

  • Utworzyć dwie wartości DWORD o nazwach ReceiveBufferSize i SendBufferSize, nadać im wartość 0800 (hexadecimal) lub 2048 (decimal). Jest to wartość bufora w KB, przy braku tych wpisów wielkość buforów jest domyślna i wynosi 1024KB.
  • Wykonać restart wirtualnej maszyny aby ustawienia zostały wprowadzone.

Jeśli po wykonaniu powyższych kroków problem wciąż występuje (w moim przypadku miałem tą sytuację z jedna najbardziej obciążoną maszyną z IIS) należy jako wartość wprowadzić 1000 (hexadecimal) lub 4096 (decimal). Maksymalna możliwa wartość bufora to 4096KB.

źródła poza własnym doświadczeniem:

Increase VMBus buffer sizes to increase network throughput to guest VMs – Windows Server Performance Team Blog

KB 974909 – Microsoft Support

Network Adapter disabled, Event ID 4 Netvsc, miniport reset – TechNet Forums

Problem z NVRAID i zaskakujące rozwiązanie

W styczniu do testowego labu dotarło mi kilka nowych maszyn opartych na płytach głównych Asus P5N7A-VM (płyta all in one dla procesorów Intel LGA775 do której można zamontować do 16GB pamięci DDR2) Nie jestem wielkim fanem chipsetów NVIDIA ale trudno mi było mi cokolwiek tym płytom zarzucić (no może tylko brak drugiego NIC).

Po zainstalowaniu labu do racka, dodaniu dodatkowych NIC i po podłączeniu dysków, storage’a ISCSI przyszła pora na instalacje systemu. Z WDS został zainstalowany Windows Server 2008 R2 wraz z rolą Hyper-V. Do tego kilka standardowych programów. Wszystko działa bez zarzutu.

Za to w logach systemowych zaczęły pojawiać się następujące kwiatki:

Log Name: System
Source: nvraid
Date:  2010-02-10 07:45:11
Event ID: 11
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: machinename
Description:
The description for Event ID 11 from source nvraid cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

oraz

Log Name: System
Source: nvstor
Date: 2010-02-10 07:42:12
Event ID: 129
Task Category: None
Level: Warning
Keywords: Classic
User: N/A
Computer: machinename
Description:
Reset to device, \Device\RaidPort0, was issued.

Po krótkim dochodzeniu doszedłem do wniosku, że problem jest związany z antywirusem Microsoft Fore Front Clienet Security. Przypuszczenia potwierdziły poszukiwania w sieci gdzie znalazłem opis podobnego problemu związanego z obecnością w Windows Vista i Windows 7 działającego na płycie z chipsetem NVIDIA programowania Windows Live OneCare oraz Microsoft Security Essentials czyli z bliskich kuzynów Microsoft Fore Front Client Security. Nie wiem czy problem leży po stronie antywirusa czy sterowników NVIDIA, w każdym razie jeśli te dwa elementy spotkają się razem pojawia się problem. Po odinstalowaniu Microsoft Fore Front Clienet Security alarmujące wpisy w logach przestały się pojawiać.

Niestety nie miałem czasu na  dokładną analizę problemu. Właśnie pakuję się do wyjazdu na Microsoft 2010 MVP Global Summit. Jak wrócę postaram się bliżej temu przyjrzeć.

źródła, poza własnymi doświadczeniami:

NVRD64 Error 11 – NVIDIA forums

RAID Driver Missing or Corrupted, Vista Event Viewer – NVRD64 error - NVIDIA forums

nvstor32: reset to device — freezing machine – NVIDIA forums

Ku pamięci: cliconfg, czyli alias dla SQL Server

Mój romans z SQL Serverem zwykle jest przelotny i najczęściej ogranicza się do podstawowych czynności administracyjnych.

Od czasu do czasu trafi mi się naprawianie czegoś w krytycznej sytuacji i tak było tym razem.

U jednego z nowych klientów wystąpił niespodziewany problem z jedna z kilku maszyn na której działał Microsoft SQL Server 2005. Tak nieszczęśliwie się stało, że sprzęt nie nadawał się do dalszego użytku, na szczęście bazy był składowane na zewnętrznej macierzy dyskowej i nie były uszkodzone.

Bazy zostały podłączone do innej maszyny z SQL Serverem 2005. Teraz tylko zmienić pliki konfiguracyjne aplikacji i powinno działać:) Niestety w tym przypadku nie było tak banalnie. Pomysłowy twórca aplikacji umieścił pliki konfiguracyjne w jej wnętrzu tak, że nie można ich było edytować (za takie coś powinno się ucinać ręce i nie tylko), nie bardzo było możliwe, żeby szybko ją przekompilowywać.

Najszybszym w tym przypadku rozwiązaniem było oszukanie aplikacji.

Jak to zrobić?

Polecenie  cliconfg uruchamia narzędzie SQL Server Client Network Utility. Z pomocą którego w prosty sposób można ustawić alias którego będzie używała aplikacja.

Bardziej wnikliwi zaraz powiedzą, że to samo można osiągnąć przez zmiany w DNS lub w pliku hosts na serwerze aplikacyjnym. Rzeczywiście można ale pod warunkiem, że nowy SQL Server znajduje się w tej samej instancji co stary;)

źródło: własne doświadczenie

Instalacja Windows 7 na napędzie USB a licencja

Kilka dni temu opublikowałem na moim blogu 2 tutoriale: Instalacja Windows 7 na napędzie USB oraz Instalacja Windows 7 na napędzie USB (z użyciem VHD). Opisują one od strony technicznej scenariusze instalacji Windows 7 i Windows Server 2008 napędzie USB.

Zgodnie z informacją jaką w dniu dzisiejszym otrzymałem z Centrum Obsługi Klienta Microsoft taka instalacja jest dopuszczona przez licencję Windows 7 i Windows Server 2008 R2. Cytat z maila jaki w tej sprawie otrzymałem: “Instalacja systemu na nośniku danych jakim jest USB, jest możliwa i nie powoduje, że takie postępowanie stoi w sprzeczności z licencją. Należy zwrócić uwagę na fakt, że oprogramowanie załadowane z napędu USB – w przypadku licencji OEM, przypisze się do komputera i instalacja na innym urządzeniu z tego napędu nie jest możliwa“.

źródło: korespondencja z Centrum Obsługi Klienta Microsoft

Instalacja Windows 7 na napędzie USB (z użyciem VHD)

W dalszym ciągu czekam na informację od Microsoft czy instalacja Windows 7 na nośniku USB jest dopuszczalna przez licencję Windows 7. Mam nadzieję, że okaże się, że Microsoft tak sam jak ja rozumie zapis zawarty w EULA.

Zebrałem metody instalacji na USB, które umieściłem w dwóch moich ostatnich wpisach: Instalacja Windows 7 na napędzie USB i Hyper-V Server 2008 R2 instalacja na USB. Tworząc z nich scenariusz, gdzie Windows 7 instalowany jest do VHD, który znajduje się na dysku USB.

Windows 7: Release Candidate

Bootowanie z VHD wprowadzone wraz z Windows 7 i Windows Server 2008 R2 mocno rozszerzyło możliwości wdrażania systemów w tym możliwość instalacji na napędzie USB. Bootowanie z VHD w Windows 7 jest możliwe tylko w wersji Ultimate i Enterprise, przedstawiona metoda ma zastosowanie do tych wersji Windows 7 (wspierają ją również wszystkie wersje Windows Server 2008 R2 oraz Hyper-V Server 2008 R2). Główną zaletą rozwiązania jest prostota ewentualnej reinstalacji – wystarczy nadpisanie pliku VHD. Niedogodności, które występują w systemach zainstalowanych do VHD przedstawiłem już jakiś czas temu, warto o nich przeczytać zanim zdecydujemy się na taką instalację. Procedura opisywana poniżej nie należy do najłatwiejszych i jest dedykowana dla zaawansowanych, jest trudniejsza niż poprzedni wpis o instalowania Windows 7 na USB. Rozwiązanie testowałem na laptopie Dell D630, D6400 oraz na stacji roboczej Dell Vostro 430, na każdym z nich działało poprawnie. Jeśli się zdecydowałeś na wprowadzenie go w życie powinieneś się zaopatrzyć w:

Wszystkie poniższe operacje wykonywałem na Windows 7 Ultimate x64 z zainstalowanym pakietem WAIK, gdzie:

  • C: to dysk systemowy
  • D: napęd DVD (może być to też klucz USB lub zamiast tego można użyć ścieżki do rozpakowanego obrazu płyty) z instalatorem Windows 7
  • W porcie USB znajduje się klucz USB na którym zainstalowany zostanie system. UWAGA! Wszystkie dane z nośnika wymiennego zostaną skasowane, nie jest to koniecznością, zdecydowałem się na to z powodu przejrzystości opisu.

Ad rem!

  1. Uruchamiamy CMD z uprawnieniami Adminsitratora, za jego pomocą tworzymy w folderze nowym folderze WINvhd na dysku C: plik VHD o wielkości prawie 15GB, formatujemy jego zawartość i nadajemy oznaczenie R:.

    mkdir c:\WINvhd
    diskpart
    create vdisk file=c:\WINvhd\Windows.vhd maximum=15000 type=fixed
    select vdisk file=c:\WINvhd\Windows.vhd
    attach vdisk
    create partition primary
    assign letter=R
    format quick fs=ntfs label=WINvhd
    exit

  2. Rozpakowanie pliku WIM, przechodzimy do folderu gdzie znajduje się ImageX, w moim przypadku używam wersji X64. W drugiej linii sprawdzamy jakie są wszystkie wersje systemu dostępne w pliku WIM, w moim przypadku Windows 7 Ultimate X64 był dostępny jako <IMAGE INDEX=”4″>, dlatego w następnym kroku pojawiła się cyfra 4.

    cd /d “C:\Program Files\Windows AIK\Tools\amd64″
    imagex /info d:\sources\install.wim
    imagex /apply /check d:\sources\install.wim 4 R:\

  3. Odłaczamy dysk VHD.

    diskpart
    select vdisk file=c:\WINvhd\Windows.vhd
    detach vdisk
    exit

  4. Sprawdzamy którym urządzeniem jest docelowy napęd USB po czym wymazujemy jego zawartość, tworzymy nową partycję i formatujemy ją na NTFS i nadajemy oznaczenie Z:.

    diskpart
    list disk
    select disk <numer napędu USB>
    clean
    create partition primary
    select partition 1
    active
    format quick fs=ntfs
    assignletter=Z
    exit

  5. Kopiujemy plik VHD na napęd USB.

    copy c:\WINvhd\Windows.vhd Z:

  6. Nadpisujemy MBR na napędzie USB.

    cd /d “c:\program files\Windows AIK\Tools\PETools\AMD64\”
    bootsect /nt60 Z: /force /mbr

  7. Podłaczamy dysk VHD z napędu USB, powinien być widoczny jako R:.

    diskpart
    select vdisk file=z:\Windows.vhd
    attach vdisk
    exit

  8. Zmiana parametrów bootowania.

    bcdboot r:\windows /s Z:

  9. Dodajemy wpisy do rejestru systemu na VHD wymuszające wyłączenie pliku wymiany w celu ograniczenia zapisów na napęd USB (w razie chęci posiadania pliku wymiany z komend w linii 2 i 3 można zrezygnować)  oraz zmieniamy ustawienia startu usług związanych z magistralą USB.

    REG LOAD HKLM\WindowsTemp r:\windows\system32\config\system
    REG ADD “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v PagingFiles /t REG_MULTI_SZ /d “” /f
    REG DELETE “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v ExistingPageFiles /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBCCGP /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBEHCI /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBHUB /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBSTOR /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBUHCI /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBCCGP /v Group /t REG_SZ /d “Boot bus extender” /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBEHCI /v Group /t REG_SZ /d “Boot bus extender” /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBHUB /v Group /t REG_SZ /d “Boot bus extender” /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBSTOR /v Group /t REG_SZ /d “Boot bus extender” /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBUHCI /v Group /t REG_SZ /d “Boot bus extender” /f
    REG UNLOAD HKLM\WindowsTemp

  10. Przechodzimy exploratorem windows do R:\windows\inf i edytujemy następujące pliki: usb.inf, usbport.inf, usbstor.inf; dodając na początku ich treści:

    [*.AddService]
    StartType = 0
    LoadOrderGroup = boot bus extender

  11. Odłączamy dysk VHD.

    diskpart
    select vdisk file=z:\Windows.vhd
    detach vdisk
    exit

  12. Klucz USB z Windows 7 jest już przygotowany, można się z niego spróbować zabootować. Klucz po przygotowaniu można użyć na innej konfiguracji sprzętowej (uruchomić go na innym komputerze) ważne, żeby konfiguracja napędów była identyczna jak w momencie kiedy była przygotowywana w innym wypadku po zabootowaniu się z klucza zobaczymy informację, że start jest niemożliwy, należy wtedy edytować konfigurację bootowania na kluczu USB (dalej opis jak to zrobić). Jeśli się udało to na ekranie zobaczmy końcową fazę konfiguracji systemu. Po tym nastąpi automatyczny restart, po którym przechodzimy do punktu 13.  W razie problemów z bootowaniem z nowoutworzonego VHD na USB należy wystartować komputer z nośnika instalacyjnego, uruchomić linię komend (Shift + F10), za jej pomocą podpiąć dysk VHD (podobnie jak punkt 7 ale podając odpowiednie litery napędów) a następnie ręcznie zmienić parametry bootowania za pomocą polecenia BCDboot (punkt 8 ze wskazaniem odpowiednich dysków). Dokładniejszy opis jak posługiwać się BCDboot znajduje się tym i w  tym artykule.
  13. Po automatycznym restarcie najprawdopodobniej system się nie włączy poprawnie. Będzie się resetował podczas startu. Jest to spowodowane przywracaniem ustawień domyślnych rejestrów usług magistrali USB przez instalator. Zanim system będzie gotowy do pracy taka sytuacja wydarzy się dwukrotnie. Należy wtedy podpiąć dysk do działającego systemu i wykonać po kolei kroki: 7, 9, 10, 11 i zabootować się jeszcze raz. Te same kroki należy podjąć jeśli zmienią się ustawienia i system będzie się resetował podczas startu, zdarza się, że instalacja poprawek zmienia ustawienia rejestrów odpowiedzialnych za USB, co powoduje problemy ze startem.

Przedstawiona procedura działa zarówno z Windows 7 i Windows Server 2008 R2.

[update 27.01.2010]
Zgodnie z informacją jaką w dniu dzisiejszym otrzymałem z Centrum Obsługi Klienta Microsoft taka instalacja jest dopuszczona przez licencję Windows 7 i Windows Server 2008 R2. Cytat z maila jaki w tej sprawie otrzymałem: “Instalacja systemu na nośniku danych jakim jest USB, jest możliwa i nie powoduje, że takie postępowanie stoi w sprzeczności z licencją. Należy zwrócić uwagę na fakt, że oprogramowanie załadowane z napędu USB – w przypadku licencji OEM, przypisze się do komputera i instalacja na innym urządzeniu z tego napędu nie jest możliwa“.

źródła, poza własnym doświadczeniem:
Microsoft Hyper-V Server 2008 R2 RTM & More – Microsoft Virtualization Team Blog
Deploying Microsoft Hyper-V Server 2008 R2 on USB Flash Drive – TechNet
Walkthrough: Deploy a Virtual Hard Disk for Native Boot – TechNet
Virtual Hard Disks in Windows Server 2008 R2 and Windows 7 – TechNet
Instalacja Windows 7 oraz Windows Server 2008 R2 w plikach VHD – wss.pl
ImageX Technical Reference – TechNet
Add a Native-Boot Virtual Hard Disk to the Boot Menu – TechNet
BCDboot Command-Line Options – TechNet

Hyper-V Server 2008 R2 instalacja na USB

Hyper-V Server 2008 R2 jest nietypowy jak na system wyprodukowany przez Microsoft. Nie tylko, że jest dostępny bezpłatnie to jak mawia mój kolega “nie ma windowsa w tym systemie”. Z technicznego punktu widzenia jest w nim więcej ciekawostek, na przykład to, że wspierana jest jego instalacja na dysku USB flash.

Windows 7: Thumb drive

Dawno temu znalazłem wpis na blogu Micorosft Virtualization Team, na którym wyczytałem o możliwościach uruchamiania systemu zainstalowanego na USB: “One thing our customers and partners requested was the ability to boot from flash. Customers told us they would like to purchase a server from their hardware partner of choice with Hyper-V included and they wanted the ability to choose whether it was on traditional spinning media or flash media. You got it.”. Zacząłem szukać tego opisu i znalazłem opis na TechNecie poświęcony właśnie takiemu wdrażaniu Hyper-V Server 2008 R2, przygotowując opis bazowałem głównie na tym dokumencie. Dokument wprowadza skrót UDF od USB Flash Device, zawiera też kilka obwarowań co do tej instalacji, które po przetłumaczeniu brzmią:

  • Instalacja Microsoft Hyper-V Server 2008 R2 na UFD, który nie jest wewnętrznym komponentem komputera jak np. przenośny zewnętrzny flash USB nie jest dozwolona.
  • UFD musi być komponentem wewnętrznym wbudowanym w serwer zgodnie z dokładnym opisem zawartym w dokumencie.

Aby przeprowadzić instalację Hyper-V Server 2008 R2 urządzeniu USB należy przygotować:

Wszystkie poniższe operacje wykonywałem na Windows 7 Ultimate x64 z zainstalowanym pakietem WAIK, gdzie:

  • C: to dysk systemowy
  • D: napęd DVD (może być również klucz USB, jak również rozpakowany obraz płyty) z instalatorem Hyper-V Server 2008 R2
  • W porcie USB znajduje się klucz USB na którym zainstalowany zostanie system. UWAGA! Wszystkie dane z nośnika wymiennego zostaną skasowane, nie jest to koniecznością, zdecydowałem się na to z powodu przejrzystości opisu.

Ad rem!

  1. Uruchamiamy CMD z uprawnieniami Administratora, za jego pomocą tworzymy w folderze nowym folderze WINvhd na dysku C: plik VHD o wielkości prawie 15GB, formatujemy jego zawartość i nadajemy oznaczenie R:.

    mkdir c:\WINvhd
    diskpart
    create vdisk file=c:\WINvhd\HVserver.vhd maximum=15000 type=fixed
    select vdisk file=c:\WINvhd\HVserver.vhd
    attach vdisk
    create partition primary
    assign letter=R
    format quick fs=ntfs label=HVserver
    exit

  2. Rozpakowanie pliku WIM, przechodzimy do folderu gdzie znajduje się ImageX, w moim przypadku używam wersji X64, bo Hyper-V Server 2008 R2 jest właśnie X64. W drugiej linii sprawdzamy jakie są wszystkie wersje systemu dostępne w pliku WIM, w tym przypadku jest tylko jedna wersja <IMAGE INDEX=”1″>, właśnie ją wybiorę:) dlatego w następnym kroku pojawiła się cyfra 1.

    cd /d “C:\Program Files\Windows AIK\Tools\amd64″
    imagex /info d:\sources\install.wim
    imagex /apply /check d:\sources\install.wim 1 R:\

  3. Odłaczamy dysk VHD.

    diskpart
    select vdisk file=c:\WINvhd\Windows.vhd
    detach vdisk
    exit

  4. Sprawdzamy którym urządzeniem jest docelowy napęd USB, następnie wymazujemy jego zawartość, tworzymy nową partycję i formatujemy ją na NTFS i nadajemy oznaczenie Z:.

    diskpart
    list disk
    select disk <numer napędu USB>
    clean
    create partition primary
    select partition 1
    active
    format quick fs=ntfs
    assign letter=Z
    exit

  5. Kopiujemy plik VHD na napęd USB.

    copy c:\WINvhd\HVserver.vhd Z:

  6. Nadpisujemy MBR na napędzie USB.

    cd /d “c:\program files\Windows AIK\Tools\PETools\AMD64\”
    bootsect /nt60 Z: /force /mbr

  7. Podłączamy dysk VHD z napędu USB, powinien być widoczny jako R:.

    diskpart
    select vdisk file=z:\HVserver.vhd
    attach vdisk
    exit

  8. Zmiana parametrów bootowania.

    bcdboot r:\windows /s Z:

  9. Dodajemy wpisy do rejestru systemu na VHD wymuszające wyłączenie pliku wymiany w celu ograniczenia ilości cykli zapisów na napęd USB.

    REG LOAD HKLM\WindowsTemp r:\windows\system32\config\system
    REG ADD “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v PagingFiles /t REG_MULTI_SZ /d “” /f
    REG DELETE “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v ExistingPageFiles /f
    REG UNLOAD HKLM\WindowsTemp

  10. Odłączamy dysk VHD.

    diskpart
    select vdisk file=z:\HVserver.vhd
    detach vdisk
    exit

  11. Klucz USB z Hyper-V Server 2008 R2 jest już przygotowany, można się z niego spróbować zabootować. Klucz po przygotowaniu można użyć na innej konfiguracji sprzętowej (uruchomić go na innym komputerze) ważne, żeby konfiguracja napędów była identyczna jak w momencie kiedy była przygotowywana w innym wypadku po zabootowaniu się z klucza zobaczymy informację, że start jest niemożliwy, należy wtedy edytować konfigurację bootowania na kluczu USB (dalej opis jak to zrobić). Jeśli się udało to na ekranie zobaczmy końcową fazę konfiguracji systemu.
  12. W razie problemów z bootowaniem z nowoutworzonego VHD na USB należy wystartować komputer z nośnika instalacyjnego, uruchomić linię komend (Shift + F10), za jej pomocą podpiąć dysk VHD (podobnie jak punkt 7 ale podając odpowiednie litery napędów) a następnie ręcznie zmienić parametry bootowania za pomocą polecenia BCDboot (punkt 8 ze wskazaniem odpowiednich dysków). Dokładniejszy opis jak posługiwać sie BCDboot znajduje się tym i w  tym artykule.

Rozwiązanie testowałem na stacji roboczej Dell Vostro 420 i 430, na każdym z nich działało poprawnie.

Bardzo ciekawie wygląda zastosowanie tej metody w infrastrukturze na której Hyper-V działa na małych bezdyskowych serwerach przeznaczonych do wirtualizacji przy podłączonych dyskach NAS na których znajdują się wirtualne systemy. Wcześniej w takim scenariuszu mogła pracować tylko wirtualizacja rodem z VMware.

źródła, poza własnym doświadczeniem:

Microsoft Hyper-V Server 2008 R2 RTM & More – Microsoft Virtualization Team Blog

Deploying Microsoft Hyper-V Server 2008 R2 on USB Flash Drive – TechNet

Walkthrough: Deploy a Virtual Hard Disk for Native Boot – TechNet

Virtual Hard Disks in Windows Server 2008 R2 and Windows 7 – TechNet

Instalacja Windows 7 oraz Windows Server 2008 R2 w plikach VHD – wss.pl

ImageX Technical Reference – TechNet

Add a Native-Boot Virtual Hard Disk to the Boot Menu – TechNet

BCDboot Command-Line Options – TechNet

Instalacja Windows 7 na napędzie USB

Prawie dwa lata temu na moim blogu umieściłem wpis o możliwości instalacji Windows Vista i Windows Server 2008 na dysku USB. Rozwiązanie, które wtedy przedstawiłem nie było wygodne, z powodu konieczności posiadania komputera z Hyper-V lub VMware Server.

Windows 7: Small drive

Nie udało mi się znaleźć nigdzie dobrej metody na instalację Windows 7 i Windows Server 2008 R2 na kluczu USB dlatego postanowiłem się zabrać samemu za napisanie tutoriala. Rozwiązanie to jest rozwojową modyfikacją mojego pomysłu z przed 2 lat, jest od niego też dużo prostsze. Należy pamiętać o tym, że nie jest wspierane przez Microsoft. Domyślnie podczas startu Windows 7 i Windows Server 2008 R2 magistrala USB jest resetowana (tak samo jak w Windows Vista i Windows Server 2008) co w wypadku instalacji na napędzie USB powoduje przerwanie startu i restart komputera, w moim opisie przeciwdziałam temu przez wpisy w rejestrze i edycję plików. Procedura opisywana poniżej wymaga nieco uwagi a nie tylko wklejania poszczególnych linii do CMD. Wszystkie skomplikowane operacje zostały dodatkowo opisane. Jej działanie testowałem na laptopie Dell D630, D430, D6400 oraz na stacji roboczej Dell Vostro 430, na każdym z nich działało poprawnie.

Jeśli mimo to się zdecydowałeś należy się zaopatrzyć w:

Wszystkie poniższe operacje wykonywałem na Windows 7 Ultimate x64 z zainstalowanym pakietem WAIK, gdzie:

  • C: to dysk systemowy
  • D: napęd DVD (może być to też klucz USB, można również się posłużyć rozpakowanym obrazem) z instalatorem Windows 7
  • W porcie USB znajduje się klucz USB na którym zainstalowany zostanie system. UWAGA! Wszystkie dane z nośnika wymiennego zostaną skasowane, nie jest to koniecznością (z punktu 1 można zrezygnować jeśli jesteśmy pewni, że pierwsza partycja podstawowa na kluczu jest aktywna i jest sformatowana na NTFS, w takim wypadku należy zmienić tylko jej literę na Z:), zdecydowałem się na to z powodu przejrzystości opisu.

Ad rem!

  1. Uruchamiamy CMD z uprawnieniami Administratora, za jego pomocą czyścimy dysk USB, formatujemy jego zawartość i nadajemy oznaczenie Z:.

    diskpart
    list disk
    select disk <numer napędu USB>
    clean
    create partition primary
    select partition 1
    active
    format quick fs=ntfs
    assign letter=Z
    exit

  2. Rozpakowanie pliku WIM, przechodzimy do folderu gdzie znajduje się ImageX, w moim przypadku wdrażam wersję X64 (dlatego AMD64 w pierwszej linii, przy wdrażaniu X86 ścieżka będzie miała oczywiście X86 na końcu ). W drugiej linii sprawdzamy jakie są wszystkie wersje systemu dostępne w pliku WIM, w moim przypadku Windows 7 Ultimate X64 był dostępny jako <IMAGE INDEX=”4″>, dlatego w następnym kroku pojawiła się cyfra 4.

    cd /d “C:\Program Files\Windows AIK\Tools\amd64″
    imagex /info d:\sources\install.wim
    imagex /apply /check d:\sources\install.wim 4 Z:\

  3. Nadpisujemy MBR na napędzie USB (znów robię to dla wersji X64).

    cd /d “c:\program files\Windows AIK\Tools\PETools\AMD64\”
    bootsect /nt60 Z: /force /mbr

  4. Zmiana parametrów bootowania.

    bcdboot Z:\windows /s Z:

  5. Dodajemy wpisy do rejestru systemu na USB wymuszające wyłączenie pliku wymiany w celu ograniczenia zapisów na napęd USB (w razie chęci posiadania pliku wymiany z komend w linii 2 i 3 można zrezygnować jeśli chcemy zachować plik wymiany o domyślnych parametrach)  oraz zmieniamy ustawienia startu usług związanych z magistralą USB.

    REG LOAD HKLM\WindowsTemp z:\windows\system32\config\system
    REG ADD “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v PagingFiles /t REG_MULTI_SZ /d “” /f
    REG DELETE “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v ExistingPageFiles /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBCCGP /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBEHCI /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBHUB /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBSTOR /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBUHCI /v Start /t REG_DWORD /d 00000000 /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBCCGP /v Group /t REG_SZ /d “Boot bus extender” /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBEHCI /v Group /t REG_SZ /d “Boot bus extender” /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBHUB /v Group /t REG_SZ /d “Boot bus extender” /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBSTOR /v Group /t REG_SZ /d “Boot bus extender” /f
    REG ADD HKLM\WindowsTemp\ControlSet001\Services\USBUHCI /v Group /t REG_SZ /d “Boot bus extender” /f
    REG UNLOAD HKLM\WindowsTemp

  6. Przechodzimy eksploratorem windows do Z:\windows\inf i edytujemy następujące pliki: usb.inf, usbport.inf, usbstor.inf; dodając na początku ich treści:

    [*.AddService]
    StartType = 0
    LoadOrderGroup = boot bus extender

  7. Klucz USB z Windows 7 jest już przygotowany, można się z niego spróbować zabootować. Klucz po przygotowaniu można użyć na innej konfiguracji sprzętowej (uruchomić go na innym komputerze).
  8. Po automatycznym restarcie najprawdopodobniej system się nie włączy poprawnie. Będzie się resetował kilka sekund po starcie. Jest to spowodowane przywracaniem ustawień domyślnych rejestrów usług magistrali USB przez instalator. Zanim system będzie gotowy do pracy taka sytuacja wydarzy się dwukrotnie. Należy wtedy wykonać po kolei kroki: 5 i 6, po czym zabootować się jeszcze raz. Te same kroki należy podjąć jeśli zmienią się ustawienia i system będzie się resetował podczas startu, zdarza się, że instalacja poprawek zmienia ustawienia rejestrów odpowiedzialnych za USB, co powoduje problemy ze startem.

Przedstawioną metodę można stosować dla Windows 7 i Windows Server 2008 R2 oraz Hyper-V Server 2008 R2 (dla Hyper-V Server 2008 R2 jest wspierane przez Microsoft do instalacji do dysku VHD na USB, opiszę to wkrótce). Warto też mieć na uwadze, że wydajne USB 3.0 niedługo trafi pod strzechy, może to spowodować, że rozruch systemu z USB stanie się o wiele bardziej popularny z powodu prędkości porównywalnej do interfejsu SATA 2.

Jeśli chodzi o legalność rozwiązania jestem w trakcie ustalania jakie zdanie na temat tej metody instalacji ma firma Microsoft. Przytoczę kawałek licencji Windows 7, w oryginale:

“The software is licensed on a per copy per computer basis. A computer is a physical hardware system with an internal storage device capable of running the software. A hardware partition or blade is considered to be a separate computer.”

Po polsku brzmi to:

“Oprogramowanie jest licencjonowane w trybie kopii na komputer. Komputer to fizyczny system sprzętowy z wewnętrznym urządzeniem magazynującym dane służący do uruchomiania oprogramowania. Partycja sprzętowa lub dysk typu blade są uznawane za oddzielne komputery.”

Biorąc to dosłownie instalacja na kluczu USB znajdującym się wewnątrz sprzętu komputerowego (np. klucz podłączony wewnątrz komputera nie wystający poza obudowę)  wydaje się dopuszczalna ale tak jak napisałem parę linijek wyżej jestem w trakcie sprawdzania u źródła.

[update 27.01.2010]
Zgodnie z informacją jaką w dniu dzisiejszym otrzymałem z Centrum Obsługi Klienta Microsoft taka instalacja jest dopuszczona przez licencję Windows 7 i Windows Server 2008 R2. Cytat z maila jaki w tej sprawie otrzymałem: “Instalacja systemu na nośniku danych jakim jest USB, jest możliwa i nie powoduje, że takie postępowanie stoi w sprzeczności z licencją. Należy zwrócić uwagę na fakt, że oprogramowanie załadowane z napędu USB – w przypadku licencji OEM, przypisze się do komputera i instalacja na innym urządzeniu z tego napędu nie jest możliwa“.

źródła, poza własnym doświadczeniem:

ImageX Technical Reference – TechNet

BCDboot Command-Line Options – TechNet

Ku pamięci: Naprawa schowka w sesji RDP

Bardzo dużo pracuję używając zdalnego pulpitu. Do łączenia używam systemowego klienta jak i innych narzędzi (mRemote a ostatnio vissionapp Remote Desktop 2010). Bez usługi zdalnego pulpitu właściwie trudno wyobrazić mi sobie zdalną pracę z Windowsami.

Jednak od czasu do czasu używanie RDP  potrafi być naprawdę denerwujące.

Zdarza mi się doświadczać problemu z tym, że przestaje działać schowek pomiędzy maszyną z której się łączę z maszyną docelową. Uniemożliwia to przeprowadzenie kopiowania i wklejania treści. Niestety problem jest na tyle losowy, że nie udało mi się znaleźć jego przyczyny. Udało mi się za to w Internecie wyszperać rozwiązanie.

Zamknięcie i ponowne uruchomienie procesu rdpclip na zdalnej maszynie powoduje, że schowek wraca do poprawnego działania. Przykład tej operacji:

taskkill.exe /im rdpclip.exe & rdpclip.exe

 

źródło: Fix Cut And Paste Problems With Remote Desktop – Random Stuff About Software

Ku pamięci: Windows 7 SuperAdmin panel (GodMode)

Co zrobić, żeby mieć wszystkie ustawiena systemowe Windowsa 7 jednym miejscu? Udało mi sie wczoraj znaleźć rozwiązanie. W internecie figuruje jako SuperAdmin, Master Control lub GodMode.

Aby utworzyć widok panela SuperAdmin należy:

  • Utworzyć w dowolnym miejscu nowy folder
  • Przemianować go na: SuperAdmin.{ED7BA470-8E54-465E-825C-99712043E01C}
  • Po kliknięciu na folder ukaże się okno z całym mnóstwem ustawień:

Lista innych dostępnych GUIDów, które można wykorzystać w podobny sposób, by uzyskac łatwy dostęp do określonego menu jest dostępna na MSDN.

Metoda działa również w Windows Server 2008 R2 oraz Windows Server 2008 i Windows Vista ale tylko w wersji 32 bitowej (w wersji 64 bitowej po utworzeniu folderu explorer zaczyna działać niestabilnie, usunięcie folderu ratuje sytuację).

Zadałem sobie trochę trudu starając się odszukać najstarszą notkę o użyciu tej funkcjonalności i znalazłem wpis z 28.11.2007 dotyczący Windows Vista.

W razie problemów przykład usunięcia folderu. Za pomocą linii komend przejść tam gdzie został umieszczony folder i naprawić problem usuwając nowoutworzony folder:

cd tam_gdzie_jest_folder

rd SuperAdmin.{ED7BA470-8E54-465E-825C-99712043E01C}

źródła:

Canonical Names of Control Panel Items – MSDN

Enable GodMode On Windows 7 – Geek In Disguise

Enable Windows 7 SuperAdmin-Mode – Helmers Blog

[Registry Hack] VISTA – All Control Panel & Setting tasks at one place – MeraWindows.com

Windows Server Backup – usuwanie starych kopii zapasowych

Do napisania tego wpisu zachęciło mnie pytanie w wątku na forum WSS.pl.

Dość słabo udokumentowane jest działanie Windows Server Backup i zarządzanie nim. Dokumentacja po Polsku niestety nie istnieje, szkoda. Postaram się zebrać kilka istotnych praktycznych informacji o zarządzaniu wielkością kopii zapasowych tworzonych przez WSB.

Na początek kilka podstawowych informacji o WSB:

  • Windows Server Backup to wbudowane w system narzędzie do tworzenia i zarządzania kopiami zapasowymi. Jest dostępne w każdej wersji systemu Windows Server.
  • Umożliwia tworzenie kopii zapasowych na żądanie i w oparciu o harmonogram.
  • Podczas wykonywania kopii wykorzystywany jest mechanizm VSS (Volume Shadow Copy).
  • Kopie zapasowe mogą być wykonywane dla całych woluminów (kopia sektor po sektorze) jak i dla wskazanych folderów/plików.
  • Kopie zapasowe składowane mogą być na specjalnie do tego przygotowanym dysku, folderze lub folderze sieciowym (dla folderu sieciowego możliwa jest obsługa tylko jednej kopii wstecz).
  • Kopia zapasowa zapisywana jest do pliku VHD, których maksymalna wspierana wielkość to 2088958MB (w Windows Server 2008 R2 przy kopii tylko folderów i plików ten limit nie obowiązuje).
  • W przypadku gdy folder do którego dokonywany jest backup jest pełny WSB usuwa najstarsze wersje kopii dla bieżącego backupu, po tym usuwana jest wersja volume shadow copy należąca do tej wersji kopii.

Po zaznajomieniu się z mechanizmem WSB można się zastanowić jak usuwać stare kopie zapasowe. Posłużymy się do tego głównie komendą wbadmin.

  • Przykłady na sprawdzenie wersji kopii zapasowych. i informacji o powiązanych z nimi Snapshoot ID (Shadow Copy ID):

wbadmin get versions

wbadmin get versions -backupTarget:h:

wbadmin get versions -backupTarget:\\servername\share -machine:server01

  • Przykłady na usuwanie backupów wykonanych wraz z system state:

wbadmin delete systemstatebackup –version: 01/01/2010-10:51

wbadmin delete systemstatebackup –backupTarget:h: –deleteOldest

wbadmin delete systemstatebackup -keepversions:2

  • Usunięcie najstarszego backupu wykonanego bez system state, wykorzystywane jest tu narzedzie: diskshadow.

DiskShadow.exe

Delete shadows OLDEST <BackupStorageLocation>

Exit

  • Usuwanie backupów wykonanych bez system state w przypadku potrzeby usunięcia konkretnego Shadow Copy ID jest nieco bardziej skomplikowane. Podzieliłem je na trzy etapy: a -  ustalenie wersji backupu, b – ustalenie Shadow Copy ID, c – Usunięcie wybranego Shadow Copy ID. Wykorzystwana jest tu również komenda: vssadmin.

a.

vssadmin list shadows /for=<BackupTarget>

vssadmin list shadows /for=h:

b.

Należy pamiętać, że Shadow Copy ID jest tym samym co Snapshot ID

c.

DiskShadow.exe

Delete shadows ID <Shadow Copy ID>

Exit

źródła poza własnym doświadczeniem:

Windows Server Backup Step-by-Step Guide for Windows Server 2008 R2 – TechNet

Planning for Backup – TechNet

Backup Version and Space Management in Windows Server Backup – Microsoft Storage Team

Wbadmin – TechNet

Zarządzanie backupem Hyper-V – WSS.pl

Projekt TFS Integration Platform

Projekt TFS to TFS Migration Tool został zamknięty. Prace nad narzędziem do migracji artefaktów pomiędzy serwerami TFS przeniosły się do nowego projektu: TFS Integration Platform.

W tej chwili na nowej witrynie projektu do pobrania jest instalator:

TFS Integration Platform (installer – Alpha)

oraz dokumentacja:

TFS Integration Platform Documentation

w skład której wchodzą dwa ogólne dokumenty, którym warto się przyjrzeć:

TFS Integration Platform – Migration Guidance

TFS Integration Platform – Planning Poster

Zasada działania TFS Integration Platform jest podobna do zasad działania TFS to TFS Migration Tool. Wskazuje to, że narzędzie będzie posiadało podobne ograniczenia co do funkcjonalności. Pocieszające jest, że lepiej jest przygotowana dokumentacja i scenariusze do operacji wspieranych przez narzędzie.

Za jakiś czas będę przeprowadzał integrację trzech dużych środowisk TFS 2008/10 i nowemu narzędziu będę się musiał poważnie przyjrzeć. Do tej pory brałem pod uwagę jedynie wspierany w TFS 2010 scenariusz z podłączeniem baz danych z TFS 2008 (jest to wspierane!) alternatywa w postaci TFS Integration Platform może bardzo mi pomóc.

Jeśli ktoś z czytelników próbował używać TFS Integration Platform jestem bardzo ciekawy efektów.

źródła:

TFS Integration Platform – CodePlex

TFS to TFS Migration Tool – CodePlex

Ku pamięci: Automatyczne wyłączenie komputerów do których nikt nie jest zalogowany

Przyszło mi po Świętach zmierzyć się z zadaniem jakim jest przygotowanie metody na wyłączenie wszystkich maszyn, do których nikt nie jest zalogowany – głównie nieużywane podczas przerwy świątecznej Serwery Terminali i stacje robocze.

Z pomocą przyszedł mi program PsLoggedOn wchodzący w skład zestawu narzędzi PsTools. Pakiet PsTools rozpakowałem do głównego katalogu mojego dysku systemowego.

Przygotowałem poniższy skrypt (plik CMD):

FOR /f %%a in (c:\PsTools\shutdownlist.txt) do (
c:\PsTools\psloggedon -l \\%%a > c:\PsTools\userlist.txt
IF errorlevel 0 ((
TYPE c:\PsTools\userlist.txt | find /i “MYDOMAIN”
)
IF errorlevel 1 (
shutdown -m \\%%a -f -s -t 00
))

W pliku c:\PsTools\shutdownlist.txt umieściłem nazwy komputerów które mają być sprawdzone pod kątem zalogowanych użytkowników i ewentualnie wyłączone gdy nikt nie jest zalogowany (przełącznik –l pomija sesje nawiązane do zasobów sieciowych – w razie potrzeby można z niego zrezygnować).

W przypadku stwierdzenie zalogowanego użytkownika należącego do domeny MYDOMAIN wyłączenie stacji nie jest wykonywane.

Metoda może być wykorzystywana do cyklicznego wyłączania maszyn z pomocą harmonogramu zadań zarówno zdalnie dla wielu maszyn pracujących w domenie jak i lokalnie dla wolnostojącego komputera w grupie roboczej (dla grupy roboczej należy MYDOMAIN zamienić na nazwę maszyny i w pliku c:\PsTools\shutdownlist.txt umieścić tylko nazwę lokalnego komputera). Dodatkowo należy upewnić się, że użytkownik wykonujący zadanie ma prawa wymagane do wykonania wyłączenia maszyn.

źródła poza własnym doświadczeniem:

PsLoggedOn – TechNet

.bat to shutdown un-logged on PC’s – computing.net

Ku pamięci: Zmiana ustawień proxy dla konta komputera

W Event Viewerze aplikacji na kilku maszynach w testowej domenie zaczął pojawiać mi się następujący błąd:


Event Type: Error
Event Source: crypt32
Event Category: None
Event ID: 8
Date: 12/16/2009
Time: 8:52:53 AM
User: N/A
Computer: ComputerName
Description:
Failed auto update retrieval of third-party root list sequence number from: <http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootseq.txt> with error: The specified server cannot perform the requested operation.For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Źródło problemu udało mi się bardzo szybko znaleźć:

Testowa sieć wykorzystuje serwer proxy do łączenia się z Internetem. Ustawienia proxy propagowane są przez GPO na kontenerze z użytkownikami, konta komputerów nie otrzymują ustawień proxy przez co nie są się w stanie z Internetem połaczyć.

Aby rozwiązać problem systemowo należy skonfigurować GPO z komputerami dla używania proxy.

Inną możliwością jest wykorzystanie na maszynie gdzie występuje problem polecenia:

proxycfg -u

Które to zmienia ustawienia proxy dla konta komputera korzystając z ustawień aplikowanych dla użytkownika uruchamiającego komendę.

Warto zapoznać się też z innymi przełącznikami polecenia proxycfg.

źródło poza własnym doświadczenem: Event ID 8 is logged in the Application log – TechNet

Ku pamięci: Jak sprawdzić jaki jest rekord MX dla domeny?

W ciągu ostatnich kilku dni ponad 5 osób zadało mi to samo pytanie. Nie wiem skąd wynika ta kumulacja ale liczę się z tym, że się jeszcze nie skończyła.

Jak sprawdzić jaki rekord MX przypisany jest dla domeny?

Bardzo prosto to zrobić z użyciem CMD:


nslookup

set type=mx

stilger.eu

Jak w CMD sprawdzic jaki jest rekord MX dla domeny

Dla niewtajemniczonych informacja co to jest rekord MX. Rekord MX (mail exchange record) mapuje nazwę domeny DNS na nazwę serwera poczty i podaje jego priorytet.

źródło: własne doświadczenia

Ku pamięci: Exception from HRESULT: 0×80040E14

Na jednym Sharepointowych serwerów w wirtualnym labie przy otwarciu strony pojawił się błąd “Exception from HRESULT: 0×80040E14″:

Exception from HRESULT 0x80040E14

W eventlogu nie znalazłem niczego interesującego, za to w logu SharePointa (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS) znalazłem często występujący następujący komunikat:

12/02/2009 14:45:28.52 w3wp.exe (0×2720) 0×0838 Windows SharePoint Services Database 6f8g Unexpected Unexpected query execution failure, error code 9002. Additional error information from SQL Server is included below. “The transaction log for database ‘STS_Content’ is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases” Query text (if available): “{?=call proc_CheckoutDocument(?,?,?,?,?,?,?,?,?,?,?,?)}”

Okazało się, że na dysku jest zbyt mało pustego miejsca.
Problem jest prosty do rozwiązania. Po odzyskaniu pustego miejsca na dysku na którym składowane są bazy danych wykorzystywane przez SharePointa sytuacja wraca do normy i witryny funkcjonują normalnie. Inne operacje jak IISRESET nie są konieczne.

źródło: własne doświadczenie