Próbuję uzyskać listę folderów udostępnianych w udziale plików. W tej chwili mam dwa foldery testowe:
\\MYPC\Test1
\\MYPC\Test2
Oto kod, który mam w tej chwili:
$FileServer = Read-Host "Enter file server to search"
$FolderList = Get-ChildItem -Path $FileServer
Write-Host $FolderList
Ale pojawia się „nie można znaleźć ścieżki”. Widzę przykłady jak to zrobić \\Server\Share
jako katalog, ale czy można po prostu przeszukać \\Server
?
net view
że nie zwróci ukrytych udziałów.Istnieje tylko jeden sposób wyliczania udziałów zdalnie z wiersza poleceń, o którym wiem i to za pomocą
net view
:Samo to nie jest szczególnie możliwe do przetworzenia, ale możesz wrzucić go do tablicy, aby przetwarzać dane linia po linii:
Masz teraz tablicę, a zaczynając
$sharedFolders[7]
od swoich akcji. Możesz wtedy znaleźćsplit
coś w rodzaju podwójnej spacji - jest mało prawdopodobne, aby pojawiała się w samej nazwie udziału i powinna działać, chyba że nazwa udziału jest bardzo długa, pozostawiając tylko jedną spację między nazwą udziału a polem typu:Możesz je przetworzyć za pomocą ForEach i logiki warunkowej. Nie byłby idealny, ale powinien działać w większości przypadków użycia.
Dla zwięzłości, aby po prostu wypisać nazwy plików do konsoli:
źródło
Jeśli chcesz znaleźć udziały lokalnego komputera, możesz po prostu
Get-SmbShare
:źródło
Rozwijając odpowiedź Marka Hendersona :
źródło
Podziękowania dla Marka Hendersona za jego rozwiązanie . Dodałem funkcję otoki, aby uczynić tę funkcję bardziej przyjazną dla programu PowerShell. Użyłem innego podejścia do podziału danych (bardziej złożone, a nie lepsze); które można łatwo przełączać w zależności od preferencji.
źródło
W systemie Windows 8 lub nowszym i Windows Server 2012 lub nowszym możesz użyć Get-SmbShare z modułu SmbShare.
źródło
Narzędzie Windows Resource Kit: rmtshare .
Uruchom pod identyfikatorem z uprawnieniami administratora na zdalnym serwerze lub nawiąż połączenie ipc $ ze zdalnym serwerem.
źródło
Oto jeden liniowiec PowerShell, który używa widoku netto do wyliczenia wszystkich zdalnych udziałów, które użytkownik może zobaczyć - nie znaczy, że mają dostęp.
Jeśli chcesz sprawdzić, czy mają (przynajmniej) dostęp do odczytu, możesz uruchomić:
Jeśli potrzebujesz zapisanych danych wyjściowych, zawsze możesz przesłać je do Export-CSV, dodając następujące elementy po ostatnim nawiasie:
Cała rzecz nie jest idealna, gdy widok sieci zgłasza błąd, ale napisałem ją na podstawie komentarzy tutaj i działa całkiem dobrze i jest pomocny w tym, czego potrzebuję, więc pomyślałem, że podzielę się. :)
źródło