SCCM – rozszerzamy Hardware Inventory

Zbierałem się do napisania artykułu, a wyszło jak zwykle Puszczam oczko

Więc szybka notka na blogu:

SCCM za pomocą Hardware Inventory potrafi zbierać informacje nie tylko o sprzęcie, ale o wszystkim co mamy zapisane w WMI. Szczegółowo jest to opisane na MyITForum – http://www.myitforum.com/myitwiki/SCCMINV.ashx 

Ostatnio trafił mi się przypadek – zbierz info o wszystkich profilach użytkowników i ich ścieżkach.

Najpierw trzeba wyciągnąć info z kluczy rejestru HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

Więc do pliku configuration.mof dodajemy na końcu sekcję:

#pragma namespace("\\.\root\CIMV2")

#pragma deleteclass("Local_SID_List",NOFAIL)

[dynamic,provider("RegProv"),ClassContext("Local|HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList")]

Class Local_SID_List

{

  [key]   string KeyName;

  [PropertyContext("ProfileImagePath")]  String ProfileImagePath;

};

Dzięki temu na każdym komputerze z zainstalowanym agentem SCCM-a w rootcimv2 stworzy się klasa Local_SID_List, która automatycznie będzie się wypełniać kluczami rejestru. Dzięki temu mamy parę: SID <-> profil

Teraz trzeba połączyć SID <-> User. Żeby to osiągnąć dodajemy do tego samego pliku następną sekcję:

#pragma namespace("\\.\root\cimv2")

#pragma deleteclass("User_Account",NOFAIL)

 

[Union,ViewSources{"select * from Win32_Account where SIDType=1"},ViewSpaces{"\\.\root\cimv2"},dynamic,Provider("MS_VIEW_INSTANCE_PROVIDER")]

Class User_Account

{

  [key,PropertySources{"Domain"}]    string    Domain;

  [key,PropertySources{"Name"}]    string    Name;

  [key,PropertySources{"SID"}]    string    SID;

};

Na każdym kompie wyciągnie info o użytkownikach lokalnych. Jeśli chcemy mieć info o SIDach kont domenowych, to musimy po prostu mieć agenta SCCM na jednym z kontrolerów domeny (konta domenowe mają swoje instancje w klasie Win32_Account)

Teraz trzeba zmusić agentów SCCM, żeby raportowali info z lokalnego WMI (instancje klas Local_SID_List i User_Account) do serwera. W tym celu modyfikujemy plik sms_def.mof

#pragma namespace("\\.\root\cimv2\sms")

#pragma deleteclass("Local_SID_List",NOFAIL)

[SMS_Report(TRUE),SMS_Group_Name("Local_SID_List"),SMS_Class_ID("SMSExpert|Local_SID_List|1.0")]

Class Local_SID_List : SMS_Class_Template

{

  [SMS_Report(TRUE),key] string   KeyName;

  [SMS_Report(TRUE) ]    string   ProfileImagePath;

};

 

#pragma namespace("\\.\root\cimv2\SMS")

#pragma deleteclass("User_Account",NOFAIL)

[SMS_Report(TRUE),SMS_Group_Name("User_Account"),SMS_Class_ID("SMSExpert|Local_User_Account|1.0") ]

Class Local_User_Account : SMS_Class_Template

{

  [key,SMS_Report(TRUE)]    string    Domain;

  [key,SMS_Report(TRUE)]    string    Name;

  [key,SMS_Report(TRUE)]    string    SID;

};

Teraz SMS Provider na serwerze sam stworzy dane w bazie SQL (w formie tabel i perspektyw), które możemy wykorzystywać do tworzenia raportów. Jeśli nie chce nam się bawić w SQLki, to można na maszynie uruchmić SCCMowy Resource Explorer i obejrzeć wyniki Hardware Inventory.

Co do dokładnego procesu tworzenia raportów – to już temat na inny wpis Uśmiech

SCCM. notki z pola walki

Ostatni sporo walczyłem z SCCMemem. tym, którzy nie znają, polecam artykuły Jacusia D. na http://jacekdoktor.pl/html/cm07.html jednym z nich, który ma wg mnie etykietę “must read” jest dotyczący instalacji tego narzędzia Belzebuba (parafraza opinii neXora Uśmiech z językiem ) na 2008/2008R2 – http://jacekdoktor.pl/html/webdav.html

niestety mimo dobrych rad i artykułów nie zawsze to się udaje :/ czasami mimo przeprowadzania 10 lub 20 instalacji dostajemy jakiś nowy błąd. tym razem napatoczyłem się na coś takiego:
SMS Management Point — Error 25006. Setup was unable to create the Internet virtual directory CCM_Incoming
The error code is 80070005

po chwili wyszukiwania okazało się, ze folder C:winsowstasks miał nieprawidłowe uprawnienia. po odpięciu szkodzącego GPO, zatrzymaniu usługi, skasowaniu folderu, uruchomieniu usługi Task Scheduler wszystko (IIS, WebDAV, BITS, Managememnt Point, WSUS) działa jak powinno Uśmiech

dodatkowo jak już się uda Behemota doprowadzić do działania, jest szereg przydatnych narzędzi wspomagających jego działanie. większość można znaleźć tutaj: http://www.myitforum.com/myitwiki/SCCMTools.ashx 

dodatkowo right click tools: http://myitforum.com/cs2/blogs/rhouchins/archive/2008/04/09/sccm-right-click-tools.aspx
Console Extensions: http://myitforum.com/cs2/blogs/direland/pages/sccm-console-extensions.aspx 
I oczywiście SCCM Toolkit 2.0, który zawiera niezbędne narzędzie Trace 32 http://www.microsoft.com/download/en/details.aspx?id=9257

PS. Uwaga – bardzo lubię SCCM-a i uważam, że dobrze zaprojektowany i skonfigurowany jest fantastycznym narzędziem. większość problemów z nim wynika z kiepskiego wdrożenia lub implementacji rozwiązania.

Zostałem MVP w kategorii Management Infrastructure!

Dziś dostałem maila, który wyglądał tak:


Dear Daniel Stefaniak,
Congratulations! We are pleased to present you with the 2011 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in Management Infrastructure technical communities during the past year.

Po paru latach udzielania się w PLGSC i PInG nareszcię się udało Szeroki uśmiech

UEFI i serwery Blade IBM

Dziś miałem okazję pobawić się serwerami Blejodwymi od IBMa. Ustrojstwa te już wcale nie mają BIOSu, tylko UEFI http://pl.wikipedia.org/wiki/UEFI. Ogólnie pięknie, tylko po włożeniu płytki z W2k8R2 miałem piękny komunikat, że dyski (które są widoczne w instalatorze) nie mogą być bootowalne O_O Po szukaniu informacji na stronie IBM (istna masakra BTW), walk z diskpartem i szukaniu w UEFI opcji kompatybilności wstecznej, znalazłem coś takiego na stronach M$ http://www.microsoft.com/whdc/system/platform/firmware/uefiguide.mspxszczególnie interesujący był punkt:  Use Device Manager’s Firmware option and select Boot from file.więc znalazłem w UEFI opcję boot from file. namierzyłem na płytce plik  Boot64.efi i śmiga :D czy instalacja się udała, okaże się jutro :)

SCCM i synchronizacje

Ostantnio walczyłem z Software Updates i Asset Intellignece z SCCM w środowisku gdzie jest proxy. Żeby przeglądać logi korzystałem oczywiście z genialnego narzędzia Trace 32 będą cego częścią toolboxa do SCCMa.

Ale pojawiła się kwestia: jak wymusić synchronizację SUP-a albo AISP-a?

jak to w SCCMie, jest to schowane w gałęzi Update Repository… I nigdzie indziej… chyba Winking smile

WSUS-SCCM

root AI trzyma polecenie synchronizacji katalogu, ale trzeba pamiętać, że można ją robić max raz na dobę.

Zune Software w PL

Wszyscy uwielbiają jak Redmond traktuje Polskę… dla nich świat zamyka się pomiędzy Pacyfikiem a Atlantykiem. W związku z tym nie ma ciągle XBL u nas (podobno pod koniec listopada) i nie da się też korzystać z Zune – całkiem przyzwoitego odtwarzacza muzyki. O ile MP3 nie słucham, to MS oferuje jedną fantastyczną usługę – Zune Pass – za 15 dolców mam dostęp do nieograniczonej ilości muzyki w streamingu i w każdym miesiącu możemy zatrzymać sobie 10 kawałków. Ogólnie myk jest taki sam jak przy XBL – trzeba mieć LiveID, które jest zarejestrowane na któryś z krajów “wspieranych”. Ale jest jeszcze jedna przeszkoda – trzeba być w odpowiednim kraju, żeby móc w ogóle się zalogować na owe ID wewnątrz desktopowego klienta Zune Software. Sposób jest prosty – trzeba zmienić w panelu kontrolnym w Windowsie lokalizację na odpowiednią Uśmiech

image

i teraz można korzystać jeszcze z niezłego playera muzyki Szeroki uśmiech

image

MDT Unattended.xml – ku pamięci

Taki szybki wpis ku pamięci. Jest sobie task seqence instalujący Windows 7 x86. dość mocno dla niego modyfikowałem Unattended.XML. Dlatego dla każdej nowej sekwencji kroków po prostu kopiowałem do go odpowiedniego podkatalogu w Control. To samo chciałem zrobić dla złapanego obrazu W7x64. niestety po 2 godzinach wali dotarło do mnie, że pliki odpowiedzi są niekompatybilne pomiędzy architekturami. dla przykłądu – wrzucam obrazki z WSIMa dla standardowych plików odpowiedzi dla obu wersji:

image

image

I już wiadomo czemu nie bangla. Następny krok do sprawdzenia, to czy da się zrobić jeden plik łączący obie architektury?

Społecznościowo

Ostatnio pomiędzy kolejnymi falami rozsyłania CV działo się troszeczkę w społecznościach:

Zrobiliśmy parę prezentacji z okazji cyklu wdrożeniowego – na każdej dotychczasowej można mnie posłuchać :)  http://edge.technet.com/Tags/Cykl-wdrozeniowy/ w przyszłym tygodniu już nie będę krzyczał w mikrofon, bo będę na MCT Summit w Yorku – http://www.mctsummit.eu/Default.aspx :)

Podobnie przygotowanie do System Center Summit Poland idą pełną parą – będę tam robić prezentację na temat System Center Data Protection Manager 2010 i scenariuszy odzyskiwania najróżniejszych danych (bare metal, exchange, sharepoint, hyper-v, file server, AD). Więcej na ms-groups http://ms-groups.pl/plgsc/SCSP2010/default.aspx a jeszcze więcej na stronie wydarzenia na Facebook-u http://www.facebook.com/home.php?#!/event.php?eid=137553766258970&ref=ts

a propos ms-groups, to portal jest w stanie migracji na wss.pl. nowy dom Polskiej Grupy System Center to: http://grupy.wss.pl/PLGSC

No i oczywiście nadchodzący wielkimi krokami MTS2010. Znów będę tam ekspertem (ATE) :D

  

TFTP a WDS – różnic parę

tym razem będzie bluzganie, więc jeśli ktoś jest fanboyem M$, to proszę przestać czytać ;)

 

jest sobie taki do bólu prosty protokół przesyłania danych – nazywa się TFTP (zdefiniowany w paru RFC – http://www.faqs.org/rfcs/rfc1350.html http://www.faqs.org/rfcs/rfc783.html; może trochę jaśniej na wikipedii – http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol)

Jest używany do wszystkich rodzajów bootowania się z sieci (network boot). Fajnie. jak coś możemy przeczytać, to można się z tego podnieść. ale co jeśli chcemy z WDSa przeczytać powiedzmy config do routera albo switcha? i może dla porządku zrobimy sobie katalog CISCO, żeby nie mieszać? CHUJ! nie działa. po godzinnym grzebaniu na eggheadcaffe (swoją drogą nie wiem czemu, ale tam są zawsze rozwiązania moich wszystkich problemów z MDT i WDSem :P ) okazuje się, że kawałek WDSa – WDSTFTP ma w rejestrze parametr ReadFilter – co robi? oczywiście filtruje do jakich ścieżek można się dostać do REMINST. OK. ma to jeszcze sens. ale to, że jeśli użyję w ścieżce TFTP ForwardSlash zamiast BackSlash (jeśli ktoś ma DHCP na pingwinie, to ukośniki są forward :P ), to to nie wpada do filtra, to paranoja.

Dobra jeden kryzys zażegnany. dodałem filtry. mogę sobie ściągać rzeczy z różnych katalogów na WDS. teraz chciałbym zrobić fajną rzecz – zbackupować sobie config na serwer. Każda próba owocuje na routerze ładnym timeoutem. Myślę sobie – nie będę guglać/bingać – odpalę wiresharka. i co się okazuje? OPERATION NOT SUPPORTED! Że coo??!! Przecież podobno na 2003 się dało (zasłyszane na social.technet chyba). Okazuje się, że chłopaki z Redmond w RIS i WDS na 2003 korzystali ze zwykłego porta pingwiniarskiego TFTPD (swoją drogą do pogrania tutaj: http://tftpd32.jounin.net/) ten obsługiwał Write-Request. W 2008/2008R2 się nie da :/ Nie ma to jak iść do przodu. Zaraz napiszę maila na steveb@microsoft.com :) może steve odpisze :P

Jak ktoś ma ochotę na posłuchanie kolejnych ustyskiwań na nieposłuszeństwo i krnąbrność WDSa w zastosowaniach niestandardowych, to zapraszam we wtorek na live meeteng – http://wss.pl/CalendareventList/1,18300/asc/Comments.aspx :)

PS. Jak się skończy nagrywać, to pobluzgamy na WDSa razem :P

BCD i skrypty

Totalny w-file tym razem. Tyle, że rozwiązany :)

Problem – zautomatyzować operację dodawania wpisów w BCD, żeby skryptem dodawać Pingwina do boot menu w Windows 7.

Pierwszy krok prosty: dodajemy wpis dla grub4dos – http://grub4dos.sourceforge.net/wiki/index.php/Grub4dos_tutorial#Booting_GRUB_for_DOS_via_the_Windows_Vista_boot_manager

Teraz wypada by to przenieść na inną maszynę – chwilka przekopywania się przez dokumentację i okazuje się, że BCDEdit umożliwia import i export ustawień. piknie – robić backup i potem go odzyskać na innej maszynie. Niestety nie działa. Z tego prostego powodu, że wpis dla W7 nie ma GUID {current}, tylko jakiś dziwoląg – niestety GUIDy są generowane pseudolosowo. Efekt: pingwin się podnosi, Windows nie ^^

Rozwiązania są dwa:

1. Wykorzystać WMI i BCDProvider (http://msdn.microsoft.com/en-us/library/aa362675(v=VS.85).aspx) i można zrobić tak (wymaga wcześniejszego dodania wpisów):

set args = WScript.Arguments
num = args.Count

if num <> 1 then
  WScript.Echo "Usage: CScript \nologo [Menu Selection]"
  WScript.Quit 1
end if

MenuPick=args.Item(0)

Const BcdLibraryString_Description = &h12000004
Const BootMgrId = "{9dea862c-5cdd-4e70-acc1-f32b344d4795}"
Const DefaultType = &h23000003
Const WindowsImages = &h10200003

strComputer = "."
Set objStoreClass = GetObject("winmgmts:{(Backup,Restore)}\" & _
strComputer & "rootwmi:BcdStore")
objStoreClass.OpenStore "", objStore
objStore.EnumerateObjects WindowsImages, colObjects
For Each objObject in colObjects
  objObject.GetElement BcdLibraryString_Description, objElement
  If Instr(objElement.String, MenuPick) Then
    objStore.OpenObject BootMgrId, objBootMgr
    objBootMgr.SetObjectElement DefaultType, objObject.ID
  End If
Next

2. wykręcić pętlę w CMD:

for /f "tokens=3" %%a in ('bcdedit -create -d "PJWSTK Linux"  -application bootsector') do set guid=%%a
bcdedit /set %guid% device boot
bcdedit /set %guid% path grldr.mbr
bcdedit /displayorder %guid% /addlast

działa pięknie – po prostu pobiera trzecie słowo z outputu BCDEDIT – to ZAWSZE jest GUID :)

teraz można to wrzucić jako cmd /c “%scriptroot%bcd.cmd” do Task Sequence w MDT i mamy zautomatyzowane dodawanie pingwinów na W7 :D

PS. warto pamiętać, ze sysprep kasuje zawartość BCD :)