Ich versuche, eine Liste der Ordner abzurufen, die auf einer Dateifreigabe freigegeben sind. Im Moment habe ich zwei Testordner:
\\MYPC\Test1
\\MYPC\Test2
Dies ist der Code, den ich im Moment habe:
$FileServer = Read-Host "Enter file server to search"
$FolderList = Get-ChildItem -Path $FileServer
Write-Host $FolderList
Aber das kommt mit "kann den Weg nicht finden". Ich kann Beispiele dafür \\Server\Share
als Verzeichnis sehen, aber ist es möglich, nur das zu durchsuchen \\Server
?
powershell
shared-folders
powershell-3.0
Das Woo
quelle
quelle
net view
würde keine versteckten Aktien zurückgeben.Es gibt nur eine Möglichkeit, Freigaben remote über die mir bekannte Befehlszeile aufzulisten
net view
:Dies ist für sich genommen nicht besonders analysierbar, aber Sie können es in ein Array werfen, um die Daten zeilenweise zu verarbeiten:
Sie haben jetzt ein Array und ab
$sharedFolders[7]
haben Sie Ihre Freigaben. Sie könnten dannsplit
auf so etwas wie ein doppeltes Leerzeichen klicken - es ist unwahrscheinlich, dass es in einem Freigabenamen selbst vorkommt. Es sollte funktionieren, es sei denn, Ihr Freigabename ist sehr lang und es bleibt nur ein Leerzeichen zwischen dem Freigabenamen und dem Typfeld:Sie können diese verarbeiten, indem Sie ForEach und eine bedingte Logik verwenden. Es wäre nicht perfekt, sollte aber für die meisten Anwendungsfälle funktionieren.
Der Kürze halber einfach die Dateinamen auf der Konsole ausgeben:
quelle
Wenn Sie die Freigaben des lokalen Computers suchen möchten, können Sie Folgendes tun
Get-SmbShare
:quelle
Auf Mark Hendersons Antwort eingehen :
quelle
Vielen Dank an Mark Henderson für seine Lösung . Ich habe eine Wrapper-Funktion hinzugefügt, um diesen Funktionsaufruf für PowerShell benutzerfreundlicher zu machen. Ich habe einen anderen Ansatz gewählt, um die Daten aufzuteilen (komplexer, nicht besser). das kann leicht nach Belieben gewechselt werden.
quelle
Unter Windows 8 oder höher und Windows Server 2012 oder höher können Sie Get-SmbShare über das SmbShare-Modul verwenden.
quelle
Windows Resource Kit-Tool: rmtshare .
Führen Sie entweder eine ID mit Administratorrechten auf dem Remote-Server aus oder stellen Sie eine IPC $ -Verbindung zum Remote-Server her.
quelle
Hier ist ein PowerShell One-Liner, der mithilfe der Netzansicht alle Remotefreigaben auflistet, die ein Benutzer sehen kann. Dies bedeutet nicht, dass er Zugriff hat.
Wenn Sie sehen möchten, ob sie (mindestens) Lesezugriff haben, können Sie Folgendes ausführen:
Wenn die Ausgabe gespeichert werden soll, können Sie sie jederzeit an Export-CSV weiterleiten, indem Sie nach der letzten Klammer Folgendes aktivieren:
Das Ganze ist nicht perfekt, wenn net view einen Fehler auslöst, aber ich habe es basierend auf den Kommentaren hier geschrieben und es funktioniert ziemlich gut und ist hilfreich für das, was ich brauche, also dachte ich, ich würde es teilen. :)
quelle