Centrum skryptów - Systemy operacyjne

Jak otworzyć okno lokalizacji UNC?

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 otworzyć okno lokalizacji UNC?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak otworzyć okno lokalizacji UNC? Podaliście jak dotąd wiele przykładów dotyczących otwierania witryn internetowych. Niestety nie udało mi się otrzymać podobnego wyniku, jeżeli chodzi o użycie skryptu do otwarcia lokalizacji \\server\share.

-- CY

Cześć Skrypciarze! Odpowiedź

Cześć, CY. W czasach trwania Zimnej Wojny, w stanach pracowali analitycy, których jedynym zadaniem było ślęczenie nad fotografiami zrobionymi w Związku Radzieckim i próba dojścia, co się naprawdę działo za Żelazną Kurtyną. Kto stoi obok kogo? Kogo postawiono z tyłu, a kogo całkiem wymazano? Co tam się działo?

W dzisiejszych czasach istnieją analitycy zajmujący się dokładną analizą rubryki Cześć Skrypciarze. Czy Skrypciarze dzisiaj znowu przeginają z dygresjami, czy za dużo narzekają, co tam się u nich dzieje?

Chyba wszyscy wiedzą, że nie możemy ujawniać wszystkich naszych sekretów. Ale mamy dla was pewną wskazówkę. Czasami można usłyszeć, jak jeden Skrypciarz mówi do drugiego coś w stylu „Wiesz stary, to jest coś o co nas często pytają i na szczęście odpowiedź jest całkiem prosta”. Potem pokazują wszystkim dwuwierszowy skrypt. Czy to oznacza, że to naprawdę jest pytanie często zadawane Skrypciarzom? No cóż, być może. Jednakże przeważnie oznacza to, że Skrypciarzom danego dnia się nic nie chce i chcą się wymigać dwuwierszowym kodem. Nie należy im na to pozwalać zbyt często! Zasługujecie na coś więcej.

Mając to już za sobą, zobaczmy, czy poradzimy sobie z dzisiejszym problemem: otwieranie okna lokalizacji UNC. No cóż, to jest coś o co nas często pytają i na szczęście odpowiedź jest całkiem prosta. Tak naprawdę można to załatwić za pomocą dwóch wierszy kodu:

Set objShell = CreateObject("Wscript.Shell")

objShell.Run "\\atl-fs-01\public"

Jak widać, niewiele można powiedzieć. Zaczynamy od utworzenia wystąpienia obiektu Wscript.Shell; następnie wywołujemy metodę Run i przekazujemy naszą ścieżkę UNC jako jedyny parametr. Czy to naprawdę otworzy katalog \\atl-fs-01\public w oknie Windows Explorer? Zaraz zobaczymy.

Jedyne, co musimy zrobić, to znaleźć ścieżki UNC zawierające puste spacje. Przykładowo, przyjrzyjmy się poniższemu skryptowi, który podobno otwiera folder \\atl-fs-01\public\ken myer:

Set objShell = CreateObject("Wscript.Shell")

objShell.Run "\\atl-fs-01\public\ken myer"

Czy to naprawdę zadziała? Niestety nie; a to dlatego, że system Windows założy, iż ścieżka kończy się w miejscu wystąpienia pustej spacji, przez co ścieżka będzie wyglądała tak:

\\atl-fs-01\public\ken

A my otrzymamy tylko następujący komunikat o błędzie:

The system cannot find the file specified.

Ale to nic; można to łatwo naprawić. Za każdym razem, gdy nasza ścieżka UNC będzie zawierać pustą spację (lub puste spacje) należy umieścić ją w cudzysłowie. (W podobny sposób należy zastosować cudzysłów, wpisując polecenie typu cd “c:\documents and settings\ken myer” z okna polecenia.) Oczywiście w tym ciągu już występuje cudzysłów, jednak wskazuje on po prostu, że mamy do czynienia z wartością ciągu; nie jest on częścią samej wartości. Dziwnie to wygląda, ale następująca składnia zajmie się problemem pustych spacji:

Set objShell = CreateObject("Wscript.Shell")

objShell.Run """\\atl-fs-01\public\ken myer"""

Trzy cudzysłowy przed ścieżką i dwa cudzysłowy po ścieżce – oto przepis na sukces, zarówno w życiu, jak i u Skrypciarzy.

Poniżej przedstawiamy mały, bonusowy skrypt, którego nie będziemy omawiać szczegółowo. Ten skrypt daje nam kolekcję wszystkich udostępnionych folderów na komputerze (w tym przypadku, komputerze zdalnym o nazwie atl-fs-01), dbając o to, żeby wyeliminować wszystkie udostępnione foldery administratorów. (W naszym przypadku oznacza to każdy udostępniony folder, który, podobnie jak C$ lub printers$, ma w nazwie znak $.) Po przekazaniu tej kolekcji, skrypt tworzy ścieżkę UNC dla każdego udostępnionego folderu, a następnie otwiera ten folder w jego własnym oknie:

strComputer = "atl-fs-01"



Set objShell = CreateObject("Wscript.Shell")



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

Set colItems = objWMIService.ExecQuery("Select * From Win32_Share")



For Each objItem in colItems

    If InStr(objItem.Name, "$") = 0 Then

        strPath = "\\" & strComputer & "\" & objItem.Name

        objShell.Run strPath

    End If

Next

Sprytne, co?

Tak na sam koniec – mała wskazówka. Za każdym razem, gdy Skrypciarze dorzucają jakiś bonusowy skrypt, może to oznaczać tylko jedno: czują się winni, bo nie wkładają zbyt wiele wysiłku w swoją pracę. Zwróćcie na to uwagę.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne