W jaki sposób udostępnić folder na komputerze zdalnym?
Skrypciarze odpowiadają na Wasze pytania
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. |
W jaki sposób udostępnić folder na komputerze zdalnym?
Cześć Skrypciarzu! W jaki sposób udostępnić folder na komputerze zdalnym?
-- RS
Cześć RS! Jedną z najwspanialszych właściwości WMI jest to, że – z kilkoma nieistotnymi wyjątkami – wszystko, co można zrobić na komputerze lokalnym, można też zrobić na komputerze zdalnym. Na tym właśnie polega przewaga skryptów nad narzędziami wiersza poleceń; część narzędzi wiersza poleceń (w tym narzędzie do udostępniania sieciowego) działa tylko na komputerze lokalnym. Czasami skrypt WMI jest jedynym sposobem, aby zrobić coś zdalnie.
W jaki sposób zatem udostępnić folder na komputerze zdalnym? Oto jeden ze sposobów:
Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = 25
strComputer = "atl-ws-01"
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set objNewShare = objWMIService.Get("Win32_Share")
errReturn = objNewShare.Create _
("C:\Public", "PublicShare", FILE_SHARE, _
MAXIMUM_CONNECTIONS, "Public share for Fabrikam employees.")
Ten skrypt udostępnia folder C:\Public na komputerze zdalnym o nazwie atl-ws-01. Zaczyna on od ustawienia dwóch stałych. Najpierw przypisujemy wartość 0 stałej FILE_SHARE (udostępnienie plików – wskazuje rodzaj tworzonych przez nas zasobów udostępnionych); jeśli wartość tej stałej ustawilibyśmy na 2147483648, zamiast standardowego współużytkowania plików utworzylibyśmy współużytkowanie administracyjne. Następnie przypisujemy wartość 25 stałej MAXIMUM_CONNECTIONS (maksimum połączeń), która ustawia liczbę jednoczesnych połączeń. Jeśli chcielibyśmy zezwolić na nieograniczoną liczbę połączeń, w ogóle nie użylibyśmy tej stałej, a podczas tworzenia udziału ten parametr pozostałby pusty.
Po połączeniu się z usługą WMI na komputerze zdalnym, łączymy się z klasą Win32_Share. Teraz musimy jedynie wywołać metodę Create (utwórz), przekazując poniższych pięć parametrów:
Parametr | Opis |
"C:\Public" | Ścieżka lokalna do udostępnianego folderu. |
"Public Share" | Sieciowa nazwa folderu udostępnionego. |
FILE_SHARE | Rodzaj tworzonego współużytkowania. |
MAXIMUM_CONNECTIONS | Maksymalna liczba użytkowników mogących naraz połączyć się z folderem udostępnionym. |
"Public share for Fabrikam employees" | Opcjonalny opis folderu udostępnionego |
To już w zasadzie wszystko; po uruchomieniu skryptu folder C:\Public zostanie udostępniony jako PublicShare (współużytkowanie publiczne). Zwróć uwagę na to, że folder C:\Public musi zostać wcześniej utworzony na komputerze atl-ws-01; metoda Create nie utworzy folderu za Ciebie. Jeśli nie jesteś pewien, czy folder C:\Public istnieje, oto sposób na szybkie sprawdzenie:
strComputer = "atl-ws-01"
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colFolders = objWMIService.ExecQuery _
("Select * From Win32_Directory Where Name = 'C:\\Public'")
Wscript.Echo colFolders.Count
Skrypt wywołuje echo liczby folderów o nazwie C:\Public (zauważ, że w samym zapytaniu trzeba to wpisać jako C:\\Public) na komputerze atl-ws-01. Jeśli liczba folderów wynosi 0, oznacza to, że folder C:\Public nie istnieje. Jeśli ta liczba wynosi 1, wówczas folder istnieje.
Przy okazji: wiemy, że wielu z Was zapyta o ustawianie uprawnień dla folderu udostępnionego. Można zrobić to przy pomocy skryptu, jednak na możliwości naszego cyklu jest to zbyt skomplikowane i wymaga zbyt szczegółowego omówienia. Mamy jednak nadzieję, że już wkrótce uda nam się opublikować większą ilość materiałów dotyczących pracy z deskryptorami zabezpieczeń.
Do początku strony