Estou tentando obter uma lista de pastas compartilhadas em um compartilhamento de arquivo. No momento, tenho duas pastas de teste:
\\MYPC\Test1
\\MYPC\Test2
Este é o código que tenho no momento:
$FileServer = Read-Host "Enter file server to search"
$FolderList = Get-ChildItem -Path $FileServer
Write-Host $FolderList
Mas isso surge com "não é possível encontrar o caminho". Eu posso ver exemplos de como fazer isso \\Server\Share
como diretório, mas é possível apenas pesquisar no \\Server
?
powershell
shared-folders
powershell-3.0
The Woo
fonte
fonte
net view
que não retornaria compartilhamentos ocultos.Há apenas uma maneira de enumerar compartilhamentos remotamente a partir da linha de comando que eu conheço, e é isso
net view
:Isso não é particularmente analisável por si só, mas você pode jogá-lo em uma matriz para processar os dados linha por linha:
Agora você tem uma matriz e a partir de
$sharedFolders[7]
suas ações. Você pode, então,split
usar um espaço duplo - é improvável que apareça no próprio nome de compartilhamento e deva funcionar, a menos que o nome do compartilhamento seja muito longo, deixando apenas um espaço entre o nome do compartilhamento e o campo type:Você pode processá-los usando um ForEach e alguma lógica condicional. Não seria perfeito, mas deve funcionar para a maioria dos casos de uso.
Por uma questão de brevidade, basta enviar os nomes dos arquivos para o console:
fonte
Se você deseja encontrar os compartilhamentos da máquina local, basta
Get-SmbShare
:fonte
Expandindo resposta de Mark Henderson :
fonte
Obrigado a Mark Henderson por sua solução . Adicionei uma função de invólucro para ajudar a tornar essa função mais amigável ao PowerShell. Eu usei uma abordagem diferente para dividir os dados (mais complexos, não melhores); que podem ser facilmente trocados com base na preferência.
fonte
No Windows 8 ou superior e no Windows Server 2012 ou superior, você pode usar o Get-SmbShare no módulo SmbShare.
fonte
Ferramenta Windows Resource Kit: rmtshare .
Execute sob id com permissões de administrador no servidor remoto ou faça uma conexão ipc $ com o servidor remoto.
fonte
Aqui está um liner do PowerShell que usa o net view para enumerar todos os compartilhamentos remotos que um usuário pode ver - não significa que eles têm acesso.
Se você deseja ver se eles têm (pelo menos) acesso de leitura, você pode executar:
Se você precisar salvar a saída, sempre poderá canalizá-la para Export-CSV, ativando o seguinte após o último colchete:
A coisa toda não é perfeita quando o net view gera um erro, mas eu o escrevi com base nos comentários aqui e funciona muito bem e é útil para o que eu preciso, então pensei em compartilhar. :)
fonte