Centrum Skryptów - Systemy Operacyjne

Jak utworzyć identyfikator GUID za pomocą skryptu?

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 utworzyć identyfikator GUID za pomocą skryptu?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Mam kilka elementów, które muszę śledzić używając unikatowych numerów identyfikacyjnych. Mój szef zasugerował zastosowanie w tym ceku identyfikatorów GUID. Czy jest jakiś sposób na utworzenie identyfikatora GUID za pomocą skryptu?

-- DX

Cześć Skrypciarze! Odpowiedź

Cześć, DX. Identyfikatory GUID (unikatowe identyfikatory globalne) to dobry wybór w tym przypadku; nie będziemy udawać, że rozumiemy, o co chodzi w algorytmach dotyczących identyfikatorów GUID, ale gwarantujemy, że wygenerowane identyfikatory będą unikatowe. Chociaż teoretycznie możliwe jest wygenerowanie powtarzającego się identyfikatora GUID – tak samo jak teoretycznie możliwe jest, że Bill Gates odda wszystkie swoje oszczędności Skrypciarzom. Nie będziemy się zagłębiać w prawdopodobieństwo zaistnienia tych dwóch sytuacji.

Istnieje bardzo prosty sposób wygenerowania identyfikatorów GUID, tak prosty, że wydaje się prawie nierealny. (Powiedziałem prawie.). Obiekt Scriptlet.TypeLib ma za zadanie pomóc w utworzeniu składników skryptu systemu Windows (zasadniczo sprawiamy, że napisany skrypt będzie działał jak obiekt COM). Obiekt Scriptlet.Typelib zawiera metodę generującą identyfikatory GUID, które można wykorzystać w bibliotekach typu składnik skryptu systemu Windows; jednakże nie ma powodu, dla którego nie można byłoby zastosować tej metody do wygenerowania identyfikatora GUID w innym celu. (W końcu GUID to GUID.). Jeżeli potrzebujemy utworzyć identyfikator GUID, oto dwuwierszowy skrypt, dzięki któremu możemy to zrobić:

Set TypeLib = CreateObject("Scriptlet.TypeLib")

Wscript.Echo TypeLib.Guid

Nieźle, nie? Oczywiście ten skrypt po prostu wywołuje echo identyfikatora GUID w polu komunikatu; jeżeli chcemy użyć tego identyfikatora GUID w innym miejscu, należy go tam wpisać. Wszystko byłoby w porządku, gdyby nie fakt, że identyfikatory GUID wyglądają mniej więcej tak:

{24DD18D4-C902-497F-A64B-28B2FA741661}

Dlatego też postanowiłem w swej wspaniałomyślności zmodyfikować ten skrypt. Poniższy skrypt generuje identyfikator GUID, ale zamiast wyświetlić go w polu komunikatu kopiuje go do schowka (Clipboard):

Set TypeLib = CreateObject("Scriptlet.TypeLib")

strGUID = TypeLib.Guid



Set objIE = CreateObject("InternetExplorer.Application")

objIE.Navigate("about:blank")

objIE.document.parentwindow.clipboardData.SetData "text", strGUID

objIE.Quit

Jeżeli zastanawiacie się, jak to zrobić, to lepiej przestańcie. Mówiłem, ze to prawie nierealne. Skrypty VBScript nie mogą kopiować elementów do Schowka, ale program Internet Explorer może. Więc po prostu generujemy identyfikator GUID i zachowujemy tę wartość w zmiennej o nazwie strGUID. Następnie tworzymy niewidoczne wystąpienie programu Internet Explorer i używamy metody clipboardData.SetData w celu skopiowania tego identyfikatora GUID do Schowka. Do tego służy nam poniższy wiersz kodu:

objIE.document.parentwindow.clipboardData.SetData "text", strGUID

Kończyny działanie programu Internet Explorer i możemy teraz wkleić identyfikator GUID gdzie nam się tylko podoba.

 Do początku strony Do początku strony

Centrum Skryptów - Systemy Operacyjne