PowerShell Получить список разделяемых папок

Я пытаюсь получить список папок, которые разделяются на общий ресурс файла. На данный момент у меня есть 2 тестовых папки:

\\MYPC\Test1 \\MYPC\Test2 

Это код, который у меня есть на данный момент:

 $FileServer = Read-Host "Enter file server to search" $FolderList = Get-ChildItem -Path $FileServer Write-Host $FolderList 

Но это приводит к тому, что «невозможно найти путь». Я могу увидеть примеры того, как это сделать для \\ Server \ Share в качестве каталога, но можно ли просто выполнить поиск в \\ Server?

    6 Solutions collect form web for “PowerShell Получить список разделяемых папок”

    Попробуй это:

     get-WmiObject -class Win32_Share -computer dc1.krypted.com 

    Ref: список акций в Windows с PowerShell

    Есть только один способ перечисления акций удаленно из командной строки, о которой я знаю, и thats with net view :

     C:\Users\mark.henderson>net view \\enetsqnap01 Shared resources at \\enetsqnap01 Share name Type Used as Comment ------------------------------------------------------------------------------- Backups Disk CallRecordings Disk Download Disk System default share home Disk Home homes Disk System default share Installs Disk Justin Disk Copy of files from Justin laptop michael Disk Multimedia Disk System default share Network Recycle Bin 1 Disk [RAID5 Disk Volume: Drive 1 2 3 4] Public Disk System default share Qsync Disk Qsync Recordings Disk System default share Sales Disk Sales Documents SalesMechanix Disk Server2012 Disk Windows Server 2012 Install Media Usb Disk System default share VMWareTemplates Disk Web Disk System default share The command completed successfully. 

    Это не особенно понятно, но вы можете перебросить его в массив для обработки данных по строкам:

     $sharedFolders = (NET.EXE VIEW \\enetsqnap01) 

    Теперь у вас есть массив, и начиная с $sharedFolders[7] вас есть ваши акции. Затем вы можете split на что-то вроде двойного пространства – вряд ли появится в самом имени общего ресурса и должно работать, если ваше имя ресурса очень длинное, оставив только одно пространство между именем и типом поля:

     $sharedFolders[7].split(' ')[0] Backups 

    Вы можете обрабатывать их, используя ForEach и некоторую условную логику. Это было бы не идеально, но оно должно работать для большинства случаев использования.

    Для краткости просто выведите имена файлов на консоль:

     (net view \\enetsqnap01) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } } 

    Расширение ответа Марка Хендерсона :

     $Servers = ( Get-ADComputer -Filter { DNSHostName -Like '*' } | Select -Expand Name ) foreach ($Server in $Servers) { (net view $Server) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } } | out-file C:\file_shares\$Server.txt } 

    Если вы хотите найти долю на локальном компьютере, вы можете просто Get-SmbShare :

     > Get-SmbShare Name ScopeName Path Description ---- --------- ---- ----------- ADMIN$ * C:\WINDOWS Remote Admin C$ * C:\ Default share 

    Спасибо Марку Хендерсону за его решение . Я добавил функцию обертки, чтобы сделать эту функцию более удобной для PowerShell. Я использовал другой подход к разбивке данных (более сложный, не лучший); Которые можно легко переключать на основе предпочтений.

     clear-host function Get-SharedFolder { [CmdletBinding()] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [string]$ComputerName , [Parameter(Mandatory = $false)] [switch]$GetItem , [Parameter(Mandatory = $false)] [string[]]$ColumnHeadings = @('Share name','Type','Used as','Comment') #I suspect these differ depending on OS language? Therefore made customisable , [Parameter(Mandatory = $false)] [string]$ShareName = 'Share name' #tell us which of the properties relates to the share name #, #[Parameter(Mandatory = $false)] #[string[]]$Types = @('Disk') # again, likely differs with language. Also there may be other types to include? ) begin { [psobject[]]$Splitter = $ColumnHeadings | %{ $ColumnHeading = $_ $obj = new-object -TypeName PSObject -Property @{ Name = $ColumnHeading StartIndex = 0 Length = 0 } $obj | Add-Member -Name Initialise -MemberType ScriptMethod { param([string]$header) process { $_.StartIndex = $header.indexOf($_.Name) $_.Length = ($header -replace ".*($($_.Name)\s*).*",'$1').Length } } $obj | Add-Member -Name GetValue -MemberType ScriptMethod { param([string]$line) process { $line -replace ".{$($_.StartIndex)}(.{$($_.Length)}).*",'$1' } } $obj | Add-Member -Name Process -MemberType ScriptMethod { param([psobject]$obj,[string]$line) process { $obj | Add-Member -Name $_.Name -MemberType NoteProperty -Value ($_.GetValue($line)) } } $obj } } process { [string[]]$output = (NET.EXE VIEW $ComputerName) [string]$headers = $output[4] #find the data's heading row $output = $output[7..($output.Length-3)] #keep only the data rows $Splitter | %{$_.Initialise($headers)} foreach($line in $output) { [psobject]$result = new-object -TypeName PSObject -Property @{ComputerName=$ComputerName;} $Splitter | %{$_.Process($result,$line)} $result | Add-Member '_ShareNameColumnName' -MemberType NoteProperty -Value $ShareName $result | Add-Member 'Path' -MemberType ScriptProperty -Value {("\\{0}\{1}" -f $this.ComputerName,$this."$($this._ShareNameColumnName)")} $result | Add-Member 'Item' -MemberType ScriptProperty -Value {Get-Item ($this.Path)} $result | Add-Member -MemberType MemberSet -Name PSStandardMembers -Value ([System.Management.Automation.PSMemberInfo[]]@(New-Object System.Management.Automation.PSPropertySet('DefaultDisplayPropertySet',[string[]](@('ComputerName','Path') + $ColumnHeadings)))) $result } } } [string[]]$myServers = 'myServer1','myServer2' #amend this line to get the servers you're interested in [psobject[]]$shares = $myServers | Get-SharedFolder write-host 'List of Shares' -ForegroundColor Cyan $shares | ft -AutoSize write-host 'Shares as Get-Item output' -ForegroundColor Cyan $shares | select -expand Item 

    Инструмент Windows Resource Kit: rmtshare .

    Либо работайте под идентификатором с разрешениями администратора на удаленном сервере, либо подключайтесь к удаленному серверу ipc $.

     rmtshare \\servername 
    Interesting Posts

    Как создать загрузочное USB-устройство AVG из Linux?

    Завершение умной вкладки (для каталогов)?

    Японская раскладка клавиатуры в Windows 7 не соответствует тому, что написано на физической клавиатуре

    Сделать WinXP считают, что есть второй монитор? (ATI Radeon Mobility 9000)

    Как я могу восстановить свой ноутбук из неудавшегося обновления BIOS?

    Приложения с интеграцией Time Machine

    Можете ли вы отключить кеш шрифтов VLC?

    Условное форматирование: 3 цветовая шкала, отображающая актуальность текста в Excel для Mac

    Почему мой жесткий диск создает странные звуки после того, как власть отключилась?

    Как отключить Cortana в Windows 10 или, по крайней мере, отключить результаты веб-поиска (для других пользователей)?

    Как использовать условное форматирование на основе сроков в Excel 2013?

    Как я могу VLOOKUP в нескольких документах Excel?

    Как установить проводник Windows в Windows 7 для отображения метаданных / тегов файлов Ogg Vorbis (.OGG) в режиме «Подробности»?

    Выход терминала поиска

    Изменение заголовков и заголовков iTerm2 в zsh

    Давайте будем гением компьютера.