Ostatnio miałem drobny zgryz. Od jakiegoś czasu pracuję głównie na systemach w wersji Core, a z racji iż wcześniej nie miałem potrzeby udostępniać zasobów sieciowych to problem się zrodził jak tego dokonać mając do dyspozycji tylko linię poleceń.
Wyjścia w zasadzie są dwa. Albo wykorzystać wbudowane polecenie net share, albo posłużyć się obiektem WMI Win32_Share. Poniżej skupię się jak wykorzystać tą właśnie klasę.
Na początek sprawdźmy jakie zasoby mamy udostępnione na danej maszynie.
Get-WmiObject -class Win32_Share
Możemy również sprawdzić zasoby innej maszyny poprzez dodanie parametru ComputerName.
Get-WmiObject -class Win32_Share -ComputerName G1
Klasa Win32_Share sama w sobie posiada cztery metody z czego 2 są wręcz niezbędne do zarządzania udostępnianymi udziałami. Mowa tu o Create oraz Delete.
By utworzyć udział sieciowy tworzymy najpierw biekt na bazie klasy Win32_Share.
$objNetShare = [WMIClass] "Win32_Share"
A następnie wykorzystujemy metodę Create. Do prostego udostępnienia wystarczy sama lokalizacja nazwa udziału oraz typ.
$objNetShare.Create(<lokalizacja>, <nazwa udziału>, <typ udziału>, <liczba jednoczesnych użytkowników>, <komentarz>, <hasło>, <ACL>) $Result = $objNetShare.Create('C:\Users\mg\Desktop\Nowy folder', 'Test', 0)
Natomiast aby usunąć zasób wystarczy wyszukać wskazajną pozycję i użyć metody Delete.
$objToDelete = Get-WmiObject -class Win32_Share -Filter "Name='Test'" $objToDelete.Delete()
Możemy sprawdzić efekt, czy aby naprawdę zasób został usunięty.
Get-WmiObject -class Win32_Share
Jest to zupełnie najprostsza forma udostępniania zasobów. Powyższy przykład nie umożliwia jednak nadawania uprawnień. Wiąże się to głównie z tym okiełznaniem klasy Win32_SecurityDescriptor, którą oczywiście nie omieszkam opisać później. Natomiast dla niecierpliwych polecam mój gotowy moduł PSNetShare.
Jak na początku wspomniałęm alternatywą jest wbudowane w system polecenie Net Share.
net share <Nazwa udziału>=<lokalizacja> /users:<limit użtkowników> /grant:<uprawnienia> net share Test="C:\Users\mg\Desktop\Nowy folder"
W celu usnięcia zasobu wystarczy użyć parametru delete.
net share Test /delete
Źródła:
http://technet.microsoft.com/en-us/library/bb490712.aspx
http://msdn.microsoft.com/en-us/library/aa394435(v=vs.85).aspx
http://code.msdn.microsoft.com/PSNetShare