Centrum skryptów - Systemy operacyjne

Jak utworzyć identyfikator GUID za pomocą programu Windows PowerShell?

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ą programu Windows PowerShell?

Cześć Skrypciarze! Pytanie

Cześć Skrypciarze! Wiem, że utworzenie identyfikatora GUID za pomocą hosta skryptów systemu Windows jest całkiem proste. Ale jak to zrobić, używając programu Windows PowerShell?

-- DL

Cześć Skrypciarze! Pytanie

Cześć, DL. Zanim zacznę, chciałbym ogłosić, że Skrypciarze poszukują 158 ochotników, którzy podejmą się misji wymagającej odwagi. Co to za misja? Planujemy obalić rząd w Kanadzie i ustanowić Skrypciarza Deana Tsaltasa dożywotnim Naczelnym Dyktatorem.

Zresztą nieważne. Planujemy to dopiero na lato; teraz w Kanadzie jest za zimno na obalanie rządów.

Uwaga do naszych kanadyjskich czytelników: Nie martwcie się zbytnio. Gdybyście zobaczyli, jak Dean się odżywia, przekonalibyście się, że jego rządy nie będą trwały długo.

Tymczasem potrzebujemy 158 ochotników do wzięcia udziału przynajmniej w jednej konkurencji Zimowej Olimpiady Skrypciarskiej 2008 (j.ang.). Dlaczego akurat 158? Cóż, jeżeli zgłosi się 158 osób, będziemy mieli dokładnie dwa razy więcej uczestników, niż w zeszłym roku. Dwa razy większe zainteresowanie Olimpiadą w ciągu roku to dla nas bardzo miłe doświadczenie.

Uwaga: Cóż to? Czy jeżeli Olimpiada Skrypciarska się rozrosła, to czy oznacza to również, że w nagrodę Microsoft podwoi nasze zarobki? Nie wiem, ale to dobry pomysł. Pogadam z Billem.

Wiem, co sobie teraz myślicie. Zastanawiacie się, czy wziąć udział w Olimpiadzie. Oraz czy Olimpiada jeszcze trwa. Ależ oczywiście! Jak się okazuje, jeszcze można wziąć udział w konkurencjach 7, 8, 9 oraz 10, jak również w codziennych rozgrywkach konkurencji Nagłej Śmierci. Weźcie udział w jednej z nich, a przyczynicie się do niesamowitego wyniku tegorocznej Olimpiady. Możecie w ten sposób wygrać także jedną ze wspaniałych nagród (j.ang.), które są częścią Olimpiady.

Najlepsze w tym wszystkim jest to, że jedyne, co Wam grozi to zwichnięcie palca podczas pisania skryptu. Jaka inna odważna misja jest tak bezpieczna?

Powiem Wam coś. Możecie w zgłoszeniu umieścić poniższy dopisek:

SUICIDE MISSION

Zobaczymy, może uda nam się odłożyć kilka laleczek dr Scripto (j.ang.). Rozlosujemy je wśród tych, którzy zgłoszą się do tej misji.

Chwileczkę. Nasza Redaktorka nie lubi, kiedy samowolnie decydujemy o rozdawaniu nagród, których jeszcze nie mamy w rękach. Dlatego nie umieszczajcie w zgłoszeniu powyższego dopisku SUICIDE MISSION. Umieśćcie natomiast poniższy:

UICIDE-SAY ISSION-MAY

Redaktorka nigdy się nie połapie, o co chodzi.

Ale nie mówcie nikomu, że bierzecie udział w tej misji. Gdyby ktoś pytał, powiedzcie mu, że jesteście tylko skromnymi użytkownikami skryptów administrowania systemu, którzy chcą się dowiedzieć, jak wygenerować identyfikator GUID za pomocą programu Windows PowerShell. Żeby mieć pewność, że nikt Was nie zdemaskuje, przedstawiam skrypt, który naprawdę generuje identyfikator GUID za pomocą programu Windows PowerShell:

$guid = [guid]::NewGuid()

$guid

Jak widać, wygenerowanie identyfikatora GUID za pomocą programu Windows PowerShell nie jest jakoś szczególnie trudne. (Czyż nie byłoby fajnie, gdyby to był najtrudniejszy możliwy skrypt?). W wierszu 1 tworzymy wystąpienie System.Guid klasy .NET Framework, używając adaptera typu [guid] programu Windows PowerShell w celu odniesienia nazwy klasy. Następnie wywołujemy metodę statyczną NewGuid, która generuje nowy identyfikator GUID i zachowuje tę wartość w zmiennej o nazwie $guid. W wierszu 2 wywołujemy echo wartości zmiennej $guid:

ba76b0c6-9f23-49c2-92ec-ce9adff7d51e

Jak już mówiłem, nie jest to najtrudniejszy skrypt na świecie.

Skoro już jesteśmy przy temacie i ponieważ powinniśmy przynajmniej poudawać, że dzisiejszy artykuł kosztował nas trochę wysiłku, przedstawiam kilka innych zadań związanych z identyfikatorem GUID, które mogą się przydać. Po wywołaniu metody NewGuid otrzymujemy wystąpienie klasy System.Guid. W większości przypadków to dobre rozwiązanie. W niektórych jednak łatwiejsza byłaby praca z reprezentacją ciągu identyfikatora GUID. Jeżeli mamy do czynienia z taką właśnie sytuacją, poniższy wiersz kodu, jak również metoda ToString przekonwertują identyfikator GUID na odpowiadającą mu wartość ciągu:

$guid = $guid.ToString()

Może się zdarzyć, że przyda się (a nawet będzie konieczna) umiejętność przekonwertowania tego nowego identyfikatora GUID na tablicę bajtową. (Zdarza się tak niekiedy podczas pracy z usługą katalogową Active Directory.) Poniższy wiersz kodu konwertuje identyfikator GUID na tablicę bajtową:

$guid = $guid.ToByteArray()

Otrzymana tablica bajtowa będzie wyglądała mniej więcej tak:

74

40

241

15

25

150

206

76

181

163

190

136

165

70

206

167

Wow. Naprawdę szybko poszło.

I to już wszystko na dziś. Nie będę Was dłużej zatrzymywał; wiem, że przynajmniej 158 z Was się szykuje na misję uicide-say ission-may. Tylko pamiętajcie, nie ma się czego bać: Nikt jeszcze na Olimpiadzie Skrypciarskiej nie ucierpiał, a praktycznie każdy się świetnie bawił.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne