Centrum skryptów - Systemy operacyjne

Jak można sprawdzić, czy komputer ma funkcję Bluetooth?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak można sprawdzić, czy komputer ma funkcję Bluetooth?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak można sprawdzić, czy dany komputer obsługuje technologię Bluetooth?

-- RR

Cześć Skrypciarze! Odpowiedź

Cześć, RR! Lubię mądre pytania, szczególnie takie, które mogą dostarczyć czytelnikowi niezbędnej wiedzy pozainternetowej – szczególnie teraz, gdy mam paranoję, że prześladuje mnie „Przypadkomon”. Już wyjaśniam, czym jest Przypadkomon. Przypadkomon (jak sama nazwa wskazuje) to monstrum, które atakuje przypadkiem, gdy najmniej się tego spodziewamy. Więc na przykład, jeżeli na wakacje wybieracie się na Litwę do Troków lub jeszcze dziwniejszego albo mniejszego miejsca, a nigdy wcześniej nie słyszeliście o Karaimach, których największe europejskie skupisko – liczące całe kilkaset osób – znajduje się w tym właśnie miasteczku, to po powrocie pierwszą rzeczą, jaką zobaczycie w telewizji, będzie program dokumentalny o Karaimach. I tak dalej, typu: jeżeli przeczytaliście na naszych łamach o fruczaku gołąbku, to akurat traficie na to pytanie w grze Trivial Pursuit.

Chciałem więc uprzedzić Przypadkomona i zanim zaatakuje, czy to w grze, czy w telewizji, zamieścić tu trochę etymologii, bo na pewno po przeczytaniu tego artykułu natraficie na pytanie: „skąd pochodzi nazwa Bluetooth?”. Już więc odpowiadam. Nazwa tej technologii pochodzi od angielskiego słowa bluetooth – sinozęby. Nawiązuje do imienia duńskiego księcia Haralda I Sinozębego, który zjednoczył plemiona skandynawskie. (Teraz czekam na atak Przypadkomona, czekam oczywiście również na inne historie związane z tym osobnikiem).

Po odpowiedzeniu na pytanie, skąd pochodzi nazwa Bluetooth, czas odpowiedzieć na drugie, mniej skomplikowane: jak można sprawdzić, czy dany komputer obsługuje tę technologię. No w sumie to nie takie proste pytanie, trudno to sprawdzić programistycznie, można oczywiście skorzystać z Panelu Sterowania, ale nie daje to takiej satysfakcji. Bazując więc na skromnej wiedzy, że Bluetooth to protokół sieciowy, w pocie czoła napisaliśmy skrypt, który ustala, czy nasze komputery testowe obsługują tę funkcję:

strComputer = "."



Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")



Set colItems = objWMIService.ExecQuery _

    ("Select * From Win32_NetworkProtocol")



For Each objItem in colItems

    If InStr(objItem.Name, "Bluetooth") Then

        Wscript.Echo "Description: " & objItem.Description

        Wscript.Echo "Name: " & objItem.Name

    End If

Next

Zaczynamy od połączenia się z usługą WMI na lokalnym komputerze. Można oczywiście także uruchomić skrypt na komputerze zdalnym, wystarczy tylko przypisać nazwę tego komputera zmiennej strComputer:

strComputer = "atl-ws-01"

Po połączeniu się z usługą WMI, używamy następującej kwerendy w celu zwrócenia kolekcji wszystkich protokołów sieciowych zainstalowanych na komputerze:

Set colItems = objWMIService.ExecQuery _

    ("Select * From Win32_NetworkProtocol")

Czy to odpowiada na Twoje pytanie? Jeszcze nie? Nie martw się, już się zbliżamy do odpowiedzi.

Aby odpowiedzieć w 100 % poprawnie, ustawiamy pętlę For Each, która przechodzi przez całą kolekcję kart sieciowych. Co robimy wewnątrz tej pętli? Oczywiście uruchamiamy następujący wiersz kodu:

If InStr(objItem.Name, "Bluetooth") Then

Używamy funkcji InStr skryptu VBScript, która przeszukuje wartość protokołu pod kątem właściwości Name. Szukamy tu czywiście wartości ciągu Bluetooth. Jeżeli InStr zwróci nam 0, to oznacza to, że nie udało się znaleźć tej funkcji w nazwie (Name) protokołu. W takim wypadku wracamy pętlą i powtarzamy proces dla następnego protokołu w kolekcji. Jeżeli InStr zwróci nam cos innego niż 0, oznacza to, że słowo zostało odnalezione w wartości właściwości Name. W takim wypadku w następujący sposób wywołujemy echo wartości protokołu Description oraz Name:

Description: Bluetooth Device (RFCOMM Protocol TDI)

Name: MSAFD RfComm [Bluetooth]

Obecność tego protokołu oznacza, że dany komputer posiada funkcję Bluetooth, pojawia się on bowiem tylko na komputerach będących w stanie obsługiwać tę technologię. Nie możemy oczywiście nic zagwarantować, ale na naszych komputerach testowych skrypt się sprawdził.

OK. Kolejna kwestia: jak można sprawdzić, czy funkcja Bluetooth jest już zainstalowana na danym komputerze? Sprawa nie jest taka prosta, ponieważ nie istnieje coś takiego jak klasa Win32_Bluetooth, Możemy jednak posiłkować się jedną z klas WMI, które istnieją i dzięki którym jesteśmy w stanie sprawdzić, czy na danym komputerze funkcja Bluetooth została zainstalowana. Tą klasą jest Win32_NetworkAdapter, skrypt bada tutaj, czy komputer ma zainstalowaną kartę Bluetooth:

strComputer = "."



Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")



Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter")



For Each objItem in colItems

    If InStr(objItem.Caption, "Bluetooth") Then

        Wscript.Echo "Caption: " & objItem.Caption

        Wscript.Echo "Device ID: " & objItem.DeviceID

        Wscript.Echo "Name: " & objItem.Name

    End If

Next

Skrypt działa podobnie do pierwszego, jedyną różnicą jest to, że używa zmiennej InStr do zbadania, czy słowo Bluetooth pojawia się gdziekolwiek we właściwości Caption dla każdej karty sieciowej zainstalowanej na tym komputerze. Na naszym komputerze testowym skrypt zwrócił nam poniższe:

Caption: [00000016] Bluetooth Device (Personal Area Network)

Device ID: 16

Name: Bluetooth Device (Personal Area Network)

Można zrobić coś podobnego do klasy Win32_POTSModem, żeby zobaczyć czy komputer posiada modem obsługujący technologię Bluetooth. I tak dalej.

Uwaga: Ponoć Toshiba produkuje już mikrofalówki, lodówki, zmywarki i suszarki obsługujące technologię Bluetooth, nie są jednak jeszcze dostępne na rynku. To była dobra wiadomość. Teraz zła: w WMI nie ma niestety klasy Win32_WasherAndDryer.

Jeszcze nie ma. Może w systemie Windows Server 2008.

Od redakcji: Nie powiedzieliśmy, że taka klasa będzie, napisaliśmy, że „może”…

Co można jeszcze o Haraldzie? Bo czuję, że głód wiedzy czytelniczej nie został zaspokojony. Ciekawe jest, że został pochowany w katedrze Roskilde. Roskilde??? Niesamowite. Przypadkomon atakuje po raz setny chyba, bo właśnie wczoraj sprawdzałem, czy wiadomo już, jakie gwiazdy będą występować na przyszłorocznym festiwalu Roskilde… W tym roku taki miód dla ucha jak The Who, Beastie Boys, czy Red Hot Chili Peppers. No i deszcz, deszcz, deszcz…Na szczęście zaopatrzyłem się już w kalosze...Tymczasem czekam na kolejne ataki Przypadkomona…

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne