Estoy tratando de obtener una lista de carpetas que se comparten en un recurso compartido de archivos. Por el momento tengo dos carpetas de prueba:
\\MYPC\Test1
\\MYPC\Test2
Este es el código que tengo en este momento:
$FileServer = Read-Host "Enter file server to search"
$FolderList = Get-ChildItem -Path $FileServer
Write-Host $FolderList
Pero esto surge con "no puedo encontrar el camino". Puedo ver ejemplos de cómo hacer esto \\Server\Share
como el directorio, pero ¿es posible simplemente buscar \\Server
?
powershell
shared-folders
powershell-3.0
El cortejar
fuente
fuente
net view
que no devolvería acciones ocultas.Solo conozco una forma de enumerar recursos compartidos de forma remota desde la línea de comandos, y eso es
net view
:Esto no es particularmente analizable por sí solo, pero puede incluirlo en una matriz para procesar los datos línea por línea:
Ahora tiene una matriz y, a partir de ahí,
$sharedFolders[7]
tiene sus acciones. Luego, podría usarsplit
algo como un doble espacio: es poco probable que aparezca en un nombre compartido, y debería funcionar a menos que su nombre compartido sea muy largo, dejando solo un espacio entre el nombre compartido y el campo de tipo:Puede procesarlos utilizando ForEach y alguna lógica condicional. No sería perfecto, pero debería funcionar para la mayoría de los casos de uso.
Para abreviar, simplemente enviar los nombres de archivo a la consola:
fuente
Si desea encontrar los recursos compartidos de la máquina local, simplemente puede hacer
Get-SmbShare
:fuente
Ampliando la respuesta de Mark Henderson :
fuente
Gracias a Mark Henderson por su solución . Agregué una función de contenedor para ayudar a que esta función llame a PowerShell. He utilizado un enfoque diferente para dividir los datos (más complejo, no mejor); que se puede cambiar fácilmente según la preferencia.
fuente
En Windows 8 o superior y Windows Server 2012 o superior, puede usar Get-SmbShare desde el módulo SmbShare.
fuente
Herramienta del Kit de recursos de Windows: rmtshare .
Ejecútelo con id con permisos de administrador en el servidor remoto o realice una conexión ipc $ al servidor remoto.
fuente
Aquí hay un PowerShell one liner que usa la vista de red para enumerar todos los recursos compartidos remotos que un usuario puede ver, no significa que tengan acceso.
Si desea ver si tienen (al menos) acceso de lectura, puede ejecutar:
Si necesita guardar la salida, siempre puede canalizarla a Export-CSV agregando lo siguiente después del último paréntesis:
Todo esto no es perfecto cuando net view arroja un error, pero lo escribí en base a los comentarios aquí y funciona bastante bien y es útil para lo que necesito, así que pensé en compartirlo. :)
fuente