Подключить сетевой диск windows 7 powershell

Работа с сетевыми дисками в Powershell строится на двух командах - New-SMBMapping и New-PSDrive. Их различия в версиях интерпретатора, который вы используете.

В Powershell реализована возможность подключать сетевые диски используя протоколы SMB/CIFS. Эта возможность использует разные команды работа с которыми может вызвать сложности. Рассмотрим применение команд на примерах.

В Powershell по умолчанию существует возможность обратиться по сетевому пути не используя сетевые диски. Например это можно сделать через команду ‘Get-ChildItem’:

Get-ChildItem -Path '\localhostc$'

Такой способ ограничен пользователем, который открыл консоль или запустил скрипт. Если вы запустите консоль от имени доменного администратора — то обращение к сетевому пути будет от его имени. 

Возможность использовать другие учетные записи, а так же подключать сетевые диски, реализованы в 2 командах:

  • New-SmbMapping — команда появилась в версии Powershell 5. Относится к модулю SmbShare, то есть создана специально для работы с SMB;
  • New-PSDrive — работает с версии Powershell 3. Все командлеты типа ‘PSDrive’ относятся ко всем дискам.

Обе команды, аналогично Get-ChildItem, подключают диски под учетной записью, которая запустила консоль.

Хоть эти команды достаточно старые, в каждой из новых версий Powershell находятся ошибки и баги. На момент написания статьи баги были найдены в версиях 5.1 — 7.1 и все они касались процесса подключения.

Основной момент, который упростит работу с сетевыми папками в Powershell кроется в понимании понятии провайдеров. Создавая сетевой диск обычными средствами Windows вы сразу видите результат в проводнике. Делая то же самое в Powershell вы изначально обращаетесь к провайдеру услуг, а он обращается к Windows. В зависимости от указанных вами параметров и возможностью команды у вас может быть создан диск только в рамках этого провайдера либо в рамках провайдера и области Windows.

Если это сложно понять, то представьте, что среда Windows и Powershell это разные вещи и что бы скопировать файл с одного места на другое — нужно использовать дополнительный параметр, которого может и не быть.

Получение списка сетевых дисков и их удаление

Мы можем получить список сетевых дисков используя обе команды модуля:

Get-PSDrive
Get-SmbMapping

Получение списка сетевых дисков через Powershell

Отличия, которые видны на первый взгляд в том, что во втором случае мы возвращаем список дисков подключение к которым не восстановилось. Кроме этого ‘Get-SmbMapping’ хранит больше информации о дисках, если вывести их все:

Get-PSDrive -Name 'G' | select *
Get-SmbMapping -LocalPath 'G:' | select *

Получение информации о сетевом диске в Powershell

Мы можем вывести учетную запись, под которой подключена сетевая папка, следующим образом:

(Get-PSDrive -Name 'G').Credential

Команды удаления отличаются только наличием параметра ‘UpdateProfile’. Если он присутствует в команде ‘Remove-SMBMapping’, то диск не будет восстанавливать соединение после перезагрузки компьютера. В случае с Remove-PSDrive это предусмотрено автоматически:

Remove-SmbMapping -LocalPath 'G:' -UpdateProfile -Force
Remove-PSDrive -Name 'J' -Force

Force удаляет подключение без подтверждения.

Подключение сетевых дисков

Проблемы с командами могут зависеть от версии вашего интерпретатора. Powershell 5-ой версии был предустановлен во всех версиях начиная с Windows 10 и Windows Server 2016. Если вы сомневаетесь в версии, то это можно проверить следующей командой:

$PSVersionTable
# или
host

Вывод версии Powershell

New-SmbMapping

Самый простой способ подключить диски, используя команду New-SmbMapping, будет выглядеть следующим способом:

New-SmbMapping -LocalPath 'J:' -RemotePath '\192.168.2.200SharedFolder' -Persistent $true

Подключение сетевого диска через Powershell New-SMBMapping

В этой команде используются следующие ключи:

  • LocalPath — локальный путь или буква, под которой будет подключен диск;
  • RemotePath — путь к папке через IP или DNS. В случае выше подразумевается, что у пользователя, который открыл консоль Powershell, есть права для подключения к этому пути. Важно так же обратить внимание на кавычки, если ваш путь содержит специальные символы;
  • Persistent — дословно переводится как ‘постоянный’, но в случае сетевых папок обозначает восстановление соединения после отключения сети/компьютера.

Пример выше специально демонстрирует проводник так как это одна из проблем этой команды в версии 5.1 — диск начнет отображаться в проводнике только после перезагрузки компьютера или перезапуске процесса ‘explorer.exe’.

Мы можем перезапустить процесс средствами Powershell. Выполнение этой команды, как минимум, закроет все открытые окна:

Stop-Process -Name 'explorer' | Start-Process -FilePath 'C:Windowsexplorer.exe'

Перезапуск explorer в Powershell

Так же у вас могут появиться другие ошибки, например следующие говорят об уже занятой букве:

  • New-SmbMapping : Имя локального устройства уже используется.
  • New-SmbMapping : The local device name is already in use.

Следующая ошибка произойдет, если вы указали слэш » в конце пути или к нему нет доступа на уровне сети (фаерволла, dns, политик и т.д.):

  • New-SmbMapping : The network name cannot be found.

New-PSDrive

В отличие от предыдущего способа — у него нет проблем с проводником, но после перезагрузки компьютера подключение к диску пропадет. Как я прочитал в каких-то версиях Powershell это исправлено, в каких-то появились новые проблем. Один из способов сделать диск постоянным — будет рассмотрен ниже.

Подключить аналогичный диск можно следующим способом:

New-PSDrive -Name 'G' -PSProvider 'FileSystem' -Root '\192.168.2.200SharedFolder' -Persist -Scope 'Global'

Подключение сетевой папки в Powershell с New-PSDrive

Где:

  • Name — путь, буква или любой другой идентификатор определяющий диск. Чаще всего это просто буква;
  • PSProvider — поставщик услуг. Всех поставщиков услуг можно увидеть через ‘Get-PSProvider’. В большинстве случаев поставщиком услуг для сетевых дисков будет ‘FileSystem’. В теории вы можете использовать поставщика «Registry» что бы в рамках сессии Powershell легче обращаться к какому-то пути. Поставщик услуг или ‘PSProvider’ — это условная программа, которая будет обрабатывать вашу команду между Powershell и Windows;
  • Root — путь до удаленной папки. Если бы в ‘PSProvider’ стоял ‘Registry’, то тут можно было указать путь следующего формата: ‘HKLM:SoftwareMicrosoft’;
  • Persist — должно ли восстанавливаться подключение при потере связи;
  • Scope — область действия диска. В этом случае не должно играть значение, но на форумах советуют использовать значение ‘Global’, если не получается подключать диск. Если бы вы использовали сетевой диск только для одно сессии Powershell — вы могли бы ограничить область видимости диска.

У вас могут появиться следующие ошибки:

  • New-PSDrive : The network resource type is not correct;
  • The specified network resource or device is no longer available.

Один из способов решения — убрать слэш в конце пути. Так же попробуйте открыть полный путь в проводнике так как ошибка может указывать на недоступность папки. Так же можете попробовать убрать параметр ‘Persist’, т.к. после этого ошибка может изменится и принять более понятный характер.

Рабочий способ сделать этот диск постоянным — отредактировать его через реестр. Ветка, под которой был подключен диск, будет иметь следующий путь »HKCU:NetworkG». «G» в конце — это буква под который был подключен диск. Мы можем вернуть существующие значения следующей командой:

Get-ItemProperty -Path 'HKCU:NetworkG'

Получение информации о сетевом диске через Powershell в реестре

Вам нужно обратить внимание на выделенные фрагменты. ‘DeferFlags’, в значении 4, обозначает, что диск подключается под логином и паролем аутентифицированного пользователя. 1-ца говорит об обратном и, возможно, что пароль не указан. На одном из форумов писали, что это поле должно указывать на цифру 4 что бы команда успешно работала. Я наблюдал случаи с 1 и 4, но проблем не замечал.

Моя проблема была решена после указания 1 в поле ‘ConnectionType’. Значение 1 говорит, что будет выполняться перенаправление дисков. Установить это значение через Powershell можно так:

Set-ItemProperty -Path 'HKCU:NetworkG' -Name 'ConnectionType' -Value 1

Изменение настроек сетевого диска через Powershell в реестре

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

Обе команды позволяют выполнять подключение используя других пользователей. Для каждой из команд этот подход отличается.

В случае команды ‘New-PSDrive’ вам нужно будет выполнить ‘Get-Credential’ и поместить в него учетные данные. Традиционный способ поместить эти данные в переменную:

$сred = Get-Credential

Ввод учетных данных в Powershell

Эта переменная будет хранить ссылку на объект в памяти, который нельзя будет экспортировать на другой компьютер. Как упростить процесс, если вы планируете использовать учетные данные на разных компьютерах, рассмотрено в другой статье.

После этого мы передаем переменную в параметр ‘-Credential’:

New-PSDrive -Credential $cred -Name 'G' -PSProvider 'FileSystem' -Root '\192.168.2.200SharedFolder' -Persist -Scope 'Global'

Подключение сетевых дисков в Powershell под другим пользователем

В случае с ‘New-SMBMapping’ эта операция выполняется проще. У вас есть 3 параметра, которые нужно заполнить:

  • UserName — логин;
  • Password — пароль;
  • SaveCredential — нужно ли сохранять учетные данные.

Пример подключения с сохранением учетных данных:

$password = '123'
$username = 'admin@domain.local'
New-SmbMapping -Username $username -Password $password `
    -LocalPath 'J:' -RemotePath '\192.168.2.200SharedFolder' `
    -Persistent $true -SaveCredentials

Подключение сетевых дисков в Powershell с New-SmbMapping под другим пользователем

Проблема, которую не получилось решить на разных версиях Powershell, связана с параметром ‘-SaveCredentials’. Его указание приводит к ошибке «New-SmbMapping : The parameter is incorrect.«. Его отсутствие — не сохраняет введенные учетные данные и после перезагрузки связь с диском может пропасть если не добавить соответствующую запись в ‘Credential Manager’. 

Подключение дисков удаленно

Каждая из команд может выполняется удаленно. У команды ‘New-SMBMapping’ для этого есть встроенный параметр ‘CimSession’. В случае обоих подходов можно использовать команды из модуля PSRemoting, например ‘Invoke-Command’. Нужно отметить, что сетевые папки в Powershell всегда подключаются под тем пользователем, под которым была запущена консоль или скрипт. Если вы были аутентифицированы под пользователем ‘alex’ и открыли консоль Powershell, то диски будут подключены пользователю ‘alex’. Кроме этого, для каждой команды у вас должен быть запущен WinRM и установлены настройки в TrustedHost.

Пример команды, которая подключит диск у пользователя:

# Вводим логин и пароль пользователя
# который имеет право подключаться к удаленному компьютеру
$cred = Get-Credential

# Устанавливаем сессию с удаленным компьютером
$session = New-CimSession -Credential $cred -ComputerName 192.168.2.111

# Через созданную сессию подключаем сетевой диск
New-SmbMapping -LocalPath S: -RemotePath "\192.168.2.200admin2" -CimSession $session

Для обеих команд подойдет следующий способ:

# Вводим логин и пароль пользователя
# который имеет право подключаться к удаленному компьютеру
$cred = Get-Credential

# Используем учетные данные для выполнения команды
Invoke-Command -ComputerName '192.168.2.111' -Credential $cred -ScriptBlock {
   New-PSDrive -Name 'G' -PSProvider 'FileSystem' -Root '\192.168.2.200SharedFolder' -Persist -Scope 'Global'
}

Теги:

#powershell

Встроенный PowerShell модуль SMBShare позволяет создавать, тонко настраивать и управлять общими сетевыми папками в Windows. В этой статье рассмотрим особенности управления сетевыми SMB папками Windows с помощью PowerShell. Вы можете использовать эти примеры для простого и быстрого управления настройками ваших файловых SMB серверов и сетевых папкок в различных сценариях автоматизации.

В модуле SMBShare доступно 42 команлета PowerShell для управления сетевыми папками. Их полный список можно вывести так:

Get-Command -Module SMBShare

SMBShare - powershell модулья для управления сетевыми папками и SMB сервером в Windows

Вывести текущую конфигурацию SMB сервера Windows:

Get-SmbServerConfiguration

AnnounceServer : False AsynchronousCredits : 64 AuditSmb1Access : False AutoDisconnectTimeout : 15 AutoShareServer : True AutoShareWorkstation : True CachedOpenLimit : 10 DurableHandleV2TimeoutInSeconds : 180 EnableAuthenticateUserSharing : False  

EnableDownlevelTimewarp : False EnableForcedLogoff : True EnableLeasing : True EnableMultiChannel : True EnableOplocks : True EnableSecuritySignature : False EnableSMB1Protocol : False EnableSMB2Protocol : True EnableStrictNameChecking : True EncryptData : False IrpStackSize : 15 KeepAliveTime : 2 MaxChannelPerSession : 32 MaxMpxCount : 50 MaxSessionPerConnection : 16384 MaxThreadsPerQueue : 20 MaxWorkItems : 1 NullSessionPipes : NullSessionShares : OplockBreakWait : 35 PendingClientTimeoutInSeconds : 120 RejectUnencryptedAccess : True RequireSecuritySignature : False ServerHidden : True Smb2CreditsMax : 2048 Smb2CreditsMin : 128 SmbServerNameHardeningLevel : 0 TreatHostAsStableStorage : False ValidateAliasNotCircular : True ValidateShareScope : True ValidateShareScopeNotAliased : True ValidateTargetName : True

Чтобы изменить эти параметры используйте командлет Set-SmbServerConfiguration:

Например, чтобы отключить использование устаревшего протокола SMB 1, выполните:

Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

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

Get-SmbConnection

Чтобы ограничить пропускную способность для файлового SMB трафика, можно настроить политику QoS для SMB сервера. Например, следующая команда ограничит максимальную используемую ширину канала для SMB трафика до 10 Мб:

Set-SmbBandwidthLimit -Category Default -BytesPerSecond 10MB

Создать сетевую папку Windows с помощью PowerShell

Чтобы вывести полный список сетевых папок, доступных на компьютере, выполните:

Get-SmbShare

Get-SmbShare список общих сетевых папок на компьютере

На этом компьютере открыт доступ к административным общим ресурсам и к каталогу Distr.

Чтобы создать новую общую сетевую папку, выполните команду:

New-SmbShare -Name Scripts -Path C:PS -FullAccess winitprospb_admins, winitpromsk-man01$ -ChangeAccess "winitpromsk-man01_script_rw" -ReadAccess “$env:USERDOMAINdomain users” –description “Collection of management PowerShell scripts”

В этом примере мы создали сетевую папку и предоставили права доступа доменным группам и одному компьютеру.

Дополнительно при создании папки можно использовать такие параметры:

  • -CachingMode [None|Manual|Programs|Documents|BranchCache]
    – задать режим кэширования для офлайн доступа (автономных файлов);
  • -EncryptData $True
    – включить шифрование SMB трафика;
  • -FolderEnumerationMode [AccessBased | Unrestricted]
    – включить опцию перечисления на основании доступа (Access-based Enumeration). Позволяет скрыть в сетевой папке объекты, на которых у пользователя нет доступа;
  • -CompressData $True
    – включить сжатие при передаче файлов по SMB;
  • -ConcurrentUserLimit 50
    – позволяет ограничить количество одновременных подключений к папке (по умолчанию 0, не ограничено);
  • -Temporary
    – создать временную сетевую папку (пропадет после следующей перезагрузки Window).

Полный список настроек сетевой папки можно вывести:

Get-SmbShare -Name scripts| select *

вывести настройки сетевой папки с помощью PowerShell

Чтобы удалить сетевую папку:

Remove-SmbShare Scripts

Добавить в список доступа сетевой папки разрешения на запись для указанного пользователя:

Grant-SmbShareAccess -Name Scripts -AccountName "winitprokbuldogov" -AccessRight Change –force

Вывести текущий список доступа к общей папке:

Get-SmbShareAccess scripts

Get-SmbShareAccess - список разрешений для доступа к сетевой папке

Удалить группу из списка доступа:

Revoke-SmbShareAccess -Name Scripts -AccountName Everyone –Force

Принудительный запрет на доступ к общей папке (запрещающее разрешение имеет более высокий приоритет):

Block-SmbShareAccess -Name Scripts -AccountName winitproExtUsers -Force

В большинстве случаев на уровне сетевой папки предоставляют доступ Everyone RW, а фактически права доступа к папке определяются на уровне NTFS.

Текущий NTFS ACL для сетевой папки можно получить с помощью команды:

(get-acl \msk-man01scripts).access

Чтобы изменить права доступа, используйте Set-Acl (подробнее про управление NTFS разрешениями с помощью PowerShell).

Управление открытыми файлами в сетевой папке

Командлеты модуля SMBShare можно использовать для просмотра списка файлов, открытых клиентами в сетевой папке на файловом сервере.

Вывести список открытых файлов с именами пользователей, именами компьютеров (IP адресами), и путями к файлам:

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID

Вывести список файлов, открытых определённым пользователем:

Get-SMBOpenFile –ClientUserName "corpkbuldogov" |select ClientComputerName,Path

Закрыть файл, открытый и заблокированный пользователем:

$sessn = New-CIMSession –Computername msk-fs01
Get-SMBOpenFile -CIMSession $sessn | where {$_.Path –like "*godovoy_otchet_2021.docx"} | Close-SMBOpenFile -CIMSession $sessn

Подключение сетевых дисков с помощью командлетов SmbMapping

Командлеты форматы SbmMapping используются для управления сетевыми дисками.

Чтобы подключить удаленную сетевую папку в сетевой диск U:, выполните команду:

New-SmbMapping -LocalPath U: -RemotePath \msk-man01scripts -UserName kbuldogov -Password mypass –Persistent $true -SaveCredential

  • Без параметра Persistent сетевой диск будет доступен только до перезагрузки компьютера;
  • Параметр SaveCredential позволяет сохранить учетные данные пользователя для подключения в диспетчер учетных данных Windows Credential Manager

Вывести список подключенных сетевых папок:

Get-SmbMapping

Для удаления сетевого диска:

Remove-SmbMapping U: -force

At first glance one really wants to use New-PSDrive supplying it credentials.

> New-PSDrive -Name P -PSProvider FileSystem -Root \servershare -Credential domainuser

Fails!

New-PSDrive : Cannot retrieve the dynamic parameters for the cmdlet. Dynamic parameters for NewDrive cannot be retrieved for the 'FileSystem' provider. The provider does not support the use of credentials. Please perform the operation again without specifying credentials.

The documentation states that you can provide a PSCredential object but if you look closer the cmdlet does not support this yet. Maybe in the next version I guess.

Therefore you can either use net use or the WScript.Network object, calling the MapNetworkDrive function:

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("u:", "\servershare", $false, "domainuser", "password")

Edit for New-PSDrive in PowerShell 3.0

Apparently with newer versions of PowerShell, the New-PSDrive cmdlet works to map network shares with credentials!

New-PSDrive -Name P -PSProvider FileSystem -Root \Server01Public -Credential userdomain -Persist

Содержание:

  • 1 Предоставление общего доступа
  • 2 Добавление сетевого диска
  • 3 Подключение по имени или IP-адресу
  • 4 Использование командной строки

Сегодня, когда цены на компьютерную технику стали более или менее приемлемыми, обзавестись своим собственным компьютером может каждый член семьи. О малых и средних предприятиях и говорить нечего, использование в них нескольких объединённых в единую локальную сеть компьютеров обычное дело. Естественно, в таких условиях в процессе работы пользователям нередко приходится обмениваться файлами. Использовать для этого съёмные переносные диски не очень удобно, поэтому разработчиками операционных систем была реализована такая возможность как создание сетевого диска. По сути, данный ресурс представляет собой директорию или отдельно созданный логический раздел, к которому открывается общий доступ, т.е. могут подключаться хосты, объединенные локальной сетью. Очень редко сетевые диски на домашнем ПК создаются для доступа к ним из глобальной сети, например, когда машина используется в качестве мини-сервера, в основном же для обеспечения единого доступа к файлам пользователя из интернета используются общие папки на облачных сервисах.

Сегодня мы узнаем, как создать и добавить сетевой диск именно в локальной сети. Основным раздающим обычно служит компьютер администратора, но им же может быть и любой другой ПК сети.

Предоставление общего доступа

Начинается всё с создания обычной папки с необычными свойствами. Наш ресурс для примера будет называться WorkFolder. Создайте в нужном вам расположении папку с подходящим именем, откройте ее свойства, переключитесь на вкладку «Доступ» и нажмите кнопку «Расширенная настройка».

Настройка общего доступа к папке - шаг 1

В новом диалоговом окошке установите птичку в чекбоксе «Открыть общий доступ…», задайте, если требуется, число одновременно получающих к ней доступ пользователей, а затем нажмите «Разрешения». По умолчанию для всех установлено разрешение только на чтение, если вы хотите, чтобы и другие пользователи могли редактировать файлы на диске и записывать на него свои данные, измените права соответствующим образом. Последовательно сохраните настройки.

Настройка общего доступа к папке - шаг 2

Настройка общего доступа к папке - шаг 3

На последнем этапе сохранения в окне свойств у вас должно появиться сообщение «Есть общий доступ» и сам путь, начинающийся с двух слешей.

Общий доступ открыт

Теперь, нажав кнопку общего доступа, добавьте в открывшемся окошке юзеров, которые смогут заходить на своих ПК в общую папку, в противном случае они будут получать сетевую ошибку, описание которой представлено на скриншоте ниже.

Настройка разрешений

Ошибка при получении доступа

На этом этапе заканчивается основная настройка сетевого диска. Следующий шаг – проверка сетевого обнаружения. Если ваша сеть определяется как частная, обнаружение должно быть включено по умолчанию, если же как общественная, его скорее всего придется открыть. Выполните в окошке Run команду control /name Microsoft.NetworkAndSharingCenter, а потом нажмите слева ссылку «Изменить дополнительные параметры общего доступа».

Переход к параметрам общего доступа

Активируйте радиокнопку «Включить сетевое обнаружение» в текущем профиле и примените изменения. Для возможности подключения сетевого диска проделанных манипуляций должно быть достаточно, если последний затем не пожелает подсоединяться, попробуйте сменить режим сети.

Включение сетевого обнаружения и общего доступа

Добавление сетевого диска

Подключить новосозданный ресурс можно разными способами, в том числе через привычную консоль CMD, но мы рассмотрим самый простой вариант. Кликните ПКМ по ярлыку «Этот компьютер» (неважно в каком месте) и выберите в меню «Подключить сетевой диск».

Подключение сетевого диска

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

Настройка сетевого диска

Через кнопку обзора выберите папку, для которой настраивали общий доступ.

Настройка сетевого диска шаг 2

После нажатия кнопки «Готово» Windows запросит текущий логин и пароль.

Ввод учетных данных

После авторизации в панели переходов Проводника в папке «Сеть» у вас и всех подключенных к локальной сети пользователей должен появиться созданный вами ресурс.

podklyuchenie-setevogo-diska-13

Соответствующий раздел должен стать видимым и в главном рабочем пространстве этого компьютера.

Созданный сетевой диск

Для отключения сетевого ресурса кликните по нему ПКМ и выберите в меню «Отключить». Также можно выделить его мышкой и выбрать на ленточном меню Сеть «Отключить сетевой диск».

Отключение сетевого диска

Подключение по имени или IP-адресу

Существуют также и другие способы подключение созданного и настроенного расшаренного ресурса, но они менее удобны. Например, вместо поиска его через обзор в поле окна подключения можно указать его символьный или IP-адрес. Символьный адрес указан в свойствах папки, IP в свойствах адаптера «Подключение по локальной сети» (параметр IPv4-адрес).

podklyuchenie-setevogo-diska-18

Этот же адрес можно получить из командной строки, выполнив в ней команду ipconfig /all (данные будут находиться в одноимённой секции).

Использование командной строки

И в завершение давайте посмотрим, как подключить сетевой диск в Windows 7/10 с помощью командной строки CMD или консоли PowerShell, возможно, кому-то этот способ покажется ещё более быстрым. Общий синтаксис команды выглядит как

net use [drive:] \ComputerNameShareName[volume] [password | *]
[/USER:[domainname]username]

Здесь drive – это свободная буква диска, а ComputerNameShareName – путь к расшаренной папке. Подключим нашу папку WorkFolder с рабочего стола как сетевой диск, для чего в запущенной с правами администратора строке выполняем такую команду:

net use Z: //DESKTOP-8CS7OLG/WorkFolder /user:компик 11111

Подключение сетевого диска через командную строку

Параметр /user необходим, чтобы система не запрашивала авторизацию. Элемент строки «компик» в данном примере это имя администратора компьютера, а «11111» его текущий пароль. Чтобы сделать сетевой диск подключённым на постоянной основе, а не только в течение открытой сессии, можете добавить в конец команды ключ /persistent:yes.

Для отключения диска выполните команду net use z: /dеlete, где z – буква диска.

Отключение сетевого диска через командную строку

К сожалению, в тестируемой нами Windows 10 при подключении командой net use соответствующий ему том не отобразился в разделе «Этот компьютер», оставаясь по-прежнему доступным из панели переходов Проводника.

Итак, теперь вы знаете, как настроить сетевой диск, но это, конечно, только общие рекомендации. Практика показывает, что в процессе подключения такого рода ресурсов нередко приходится сталкиваться с различными ошибками, из которых наиболее распространённой является «Не найден сетевой путь». Причинами сбоев могут стать проблемы с настройками сетевых адаптеров, с драйверами, параметрами сетевой безопасности и так далее. В таких случаях неполадки обычно решаются в частном порядке исходя из установленной причины.

Как подключить сетевую папку в Powershell c New-PSDrive или New-SMBMapping

В Powershell реализована возможность подключать сетевые диски используя протоколы SMB/CIFS. Эта возможность использует разные команды работа с которыми может вызвать сложности. Рассмотрим применение команд на примерах.

Навигация по посту

Как работают в Powershell сетевые диски

В Powershell по умолчанию существует возможность обратиться по сетевому пути не используя сетевые диски. Например это можно сделать через команду ‘Get-ChildItem’:

Такой способ ограничен пользователем, который открыл консоль или запустил скрипт. Если вы запустите консоль от имени доменного администратора — то обращение к сетевому пути будет от его имени.

Возможность использовать другие учетные записи, а так же подключать сетевые диски, реализованы в 2 командах:

  • New-SmbMapping — команда появилась в версии Powershell 5. Относится к модулю SmbShare, то есть создана специально для работы с SMB;
  • New-PSDrive — работает с версии Powershell 3. Все командлеты типа ‘PSDrive’ относятся ко всем дискам.

Обе команды, аналогично Get-ChildItem, подключают диски под учетной записью, которая запустила консоль.

Хоть эти команды достаточно старые, в каждой из новых версий Powershell находятся ошибки и баги. На момент написания статьи баги были найдены в версиях 5.1 — 7.1 и все они касались процесса подключения.

Основной момент, который упростит работу с сетевыми папками в Powershell кроется в понимании понятии провайдеров. Создавая сетевой диск обычными средствами Windows вы сразу видите результат в проводнике. Делая то же самое в Powershell вы изначально обращаетесь к провайдеру услуг, а он обращается к Windows. В зависимости от указанных вами параметров и возможностью команды у вас может быть создан диск только в рамках этого провайдера либо в рамках провайдера и области Windows.

Если это сложно понять, то представьте, что среда Windows и Powershell это разные вещи и что бы скопировать файл с одного места на другое — нужно использовать дополнительный параметр, которого может и не быть.

Получение списка сетевых дисков и их удаление

Мы можем получить список сетевых дисков используя обе команды модуля:

Отличия, которые видны на первый взгляд в том, что во втором случае мы возвращаем список дисков подключение к которым не восстановилось. Кроме этого ‘Get-SmbMapping’ хранит больше информации о дисках, если вывести их все:

Мы можем вывести учетную запись, под которой подключена сетевая папка, следующим образом:

Команды удаления отличаются только наличием параметра ‘UpdateProfile’. Если он присутствует в команде ‘Remove-SMBMapping’, то диск не будет восстанавливать соединение после перезагрузки компьютера. В случае с Remove-PSDrive это предусмотрено автоматически:

Force удаляет подключение без подтверждения.

Подключение сетевых дисков

Проблемы с командами могут зависеть от версии вашего интерпретатора. Powershell 5-ой версии был предустановлен во всех версиях начиная с Windows 10 и Windows Server 2016. Если вы сомневаетесь в версии, то это можно проверить следующей командой:

New-SmbMapping

Самый простой способ подключить диски, используя команду New-SmbMapping, будет выглядеть следующим способом:

В этой команде используются следующие ключи:

  • LocalPath — локальный путь или буква, под которой будет подключен диск;
  • RemotePath — путь к папке через IP или DNS. В случае выше подразумевается, что у пользователя, который открыл консоль Powershell, есть права для подключения к этому пути. Важно так же обратить внимание на кавычки, если ваш путь содержит специальные символы;
  • Persistent — дословно переводится как ‘постоянный’, но в случае сетевых папок обозначает восстановление соединения после отключения сети/компьютера.

Пример выше специально демонстрирует проводник так как это одна из проблем этой команды в версии 5.1 — диск начнет отображаться в проводнике только после перезагрузки компьютера или перезапуске процесса ‘explorer.exe’.

Мы можем перезапустить процесс средствами Powershell. Выполнение этой команды, как минимум, закроет все открытые окна:

Так же у вас могут появиться другие ошибки, например следующие говорят об уже занятой букве:

  • New-SmbMapping : Имя локального устройства уже используется.
  • New-SmbMapping : The local device name is already in use.

Следующая ошибка произойдет, если вы указали слэш ‘’ в конце пути или к нему нет доступа на уровне сети (фаерволла, dns, политик и т.д.):

  • New-SmbMapping : The network name cannot be found.

New-PSDrive

В отличие от предыдущего способа — у него нет проблем с проводником, но после перезагрузки компьютера подключение к диску пропадет. Как я прочитал в каких-то версиях Powershell это исправлено, в каких-то появились новые проблем. Один из способов сделать диск постоянным — будет рассмотрен ниже.

Подключить аналогичный диск можно следующим способом:

  • Name — путь, буква или любой другой идентификатор определяющий диск. Чаще всего это просто буква;
  • PSProvider — поставщик услуг. Всех поставщиков услуг можно увидеть через ‘Get-PSProvider’. В большинстве случаев поставщиком услуг для сетевых дисков будет ‘FileSystem’. В теории вы можете использовать поставщика «Registry» что бы в рамках сессии Powershell легче обращаться к какому-то пути. Поставщик услуг или ‘PSProvider’ — это условная программа, которая будет обрабатывать вашу команду между Powershell и Windows;
  • Root — путь до удаленной папки. Если бы в ‘PSProvider’ стоял ‘Registry’, то тут можно было указать путь следующего формата: ‘HKLM:SoftwareMicrosoft’;
  • Persist — должно ли восстанавливаться подключение при потере связи;
  • Scope — область действия диска. В этом случае не должно играть значение, но на форумах советуют использовать значение ‘Global’, если не получается подключать диск. Если бы вы использовали сетевой диск только для одно сессии Powershell — вы могли бы ограничить область видимости диска.

У вас могут появиться следующие ошибки:

  • New-PSDrive : The network resource type is not correct;
  • The specified network resource or device is no longer available.

Один из способов решения — убрать слэш в конце пути. Так же попробуйте открыть полный путь в проводнике так как ошибка может указывать на недоступность папки. Так же можете попробовать убрать параметр ‘Persist’, т.к. после этого ошибка может изменится и принять более понятный характер.

Рабочий способ сделать этот диск постоянным — отредактировать его через реестр. Ветка, под которой был подключен диск, будет иметь следующий путь »HKCU:NetworkG». «G» в конце — это буква под который был подключен диск. Мы можем вернуть существующие значения следующей командой:

Вам нужно обратить внимание на выделенные фрагменты. ‘DeferFlags’, в значении 4, обозначает, что диск подключается под логином и паролем аутентифицированного пользователя. 1-ца говорит об обратном и, возможно, что пароль не указан. На одном из форумов писали, что это поле должно указывать на цифру 4 что бы команда успешно работала. Я наблюдал случаи с 1 и 4, но проблем не замечал.

Моя проблема была решена после указания 1 в поле ‘ConnectionType’. Значение 1 говорит, что будет выполняться перенаправление дисков. Установить это значение через Powershell можно так:

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

Обе команды позволяют выполнять подключение используя других пользователей. Для каждой из команд этот подход отличается.

В случае команды ‘New-PSDrive’ вам нужно будет выполнить ‘Get-Credential’ и поместить в него учетные данные. Традиционный способ поместить эти данные в переменную:

Эта переменная будет хранить ссылку на объект в памяти, который нельзя будет экспортировать на другой компьютер. Как упростить процесс, если вы планируете использовать учетные данные на разных компьютерах, рассмотрено в другой статье.

После этого мы передаем переменную в параметр ‘-Credential’:

В случае с ‘New-SMBMapping’ эта операция выполняется проще. У вас есть 3 параметра, которые нужно заполнить:

  • UserName — логин;
  • Password — пароль;
  • SaveCredential — нужно ли сохранять учетные данные.

Пример подключения с сохранением учетных данных:

Проблема, которую не получилось решить на разных версиях Powershell, связана с параметром ‘-SaveCredentials’. Его указание приводит к ошибке » New-SmbMapping : The parameter is incorrect. «. Его отсутствие — не сохраняет введенные учетные данные и после перезагрузки связь с диском может пропасть если не добавить соответствующую запись в ‘Credential Manager’.

Подключение дисков удаленно

Каждая из команд может выполняется удаленно. У команды ‘New-SMBMapping’ для этого есть встроенный параметр ‘CimSession’. В случае обоих подходов можно использовать команды из модуля PSRemoting, например ‘Invoke-Command’. Нужно отметить, что сетевые папки в Powershell всегда подключаются под тем пользователем, под которым была запущена консоль или скрипт. Если вы были аутентифицированы под пользователем ‘alex’ и открыли консоль Powershell, то диски будут подключены пользователю ‘alex’. Кроме этого, для каждой команды у вас должен быть запущен WinRM и установлены настройки в TrustedHost.

Пример команды, которая подключит диск у пользователя:

Для обеих команд подойдет следующий способ:

Источник

Управление сетевыми папками с помощью PowerShell

Встроенный PowerShell модуль SMBShare позволяет создавать, тонко настраивать и управлять общими сетевыми папками в Windows. В этой статье рассмотрим особенности управления сетевыми SMB папками Windows с помощью PowerShell. Вы можете использовать эти примеры для простого и быстрого управления настройками ваших файловых SMB серверов и сетевых папкок в различных сценариях автоматизации.

В модуле SMBShare доступно 42 команлета PowerShell для управления сетевыми папками. Их полный список можно вывести так:

Get-Command -Module SMBShare

Вывести текущую конфигурацию SMB сервера Windows:

Чтобы изменить эти параметры используйте командлет Set-SmbServerConfiguration:

Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

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

Чтобы ограничить пропускную способность для файлового SMB трафика, можно настроить политику QoS для SMB сервера. Например, следующая команда ограничит максимальную используемую ширину канала для SMB трафика до 10 Мб:

Set-SmbBandwidthLimit -Category Default -BytesPerSecond 10MB

Создать сетевую папку Windows с помощью PowerShell

Чтобы вывести полный список сетевых папок, доступных на компьютере, выполните:

На этом компьютере открыт доступ к административным общим ресурсам и к каталогу Distr.

Чтобы создать новую общую сетевую папку, выполните команду:

New-SmbShare -Name Scripts -Path C:PS -FullAccess winitprospb_admins, winitpromsk-man01$ -ChangeAccess «winitpromsk-man01_script_rw» -ReadAccess “$env:USERDOMAINdomain users” –description “Collection of management PowerShell scripts”

В этом примере мы создали сетевую папку и предоставили права доступа доменным группам и одному компьютеру.

Дополнительно при создании папки можно использовать такие параметры:

  • -CachingMode [None|Manual|Programs|Documents|BranchCache] – задать режим кэширования для офлайн доступа (автономных файлов);
  • -EncryptData $True – включить шифрование SMB трафика;
  • -FolderEnumerationMode [AccessBased | Unrestricted] – включить опцию перечисления на основании доступа (Access-based Enumeration). Позволяет скрыть в сетевой папке объекты, на которых у пользователя нет доступа;
  • -CompressData $True – включить сжатие при передаче файлов по SMB;
  • -ConcurrentUserLimit 50 – позволяет ограничить количество одновременных подключений к папке (по умолчанию 0, не ограничено);
  • -Temporary – создать временную сетевую папку (пропадет после следующей перезагрузки Window).

Полный список настроек сетевой папки можно вывести:

Get-SmbShare -Name scripts| select *

Чтобы удалить сетевую папку:

Добавить в список доступа сетевой папки разрешения на запись для указанного пользователя:

Grant-SmbShareAccess -Name Scripts -AccountName «winitprokbuldogov» -AccessRight Change –force

Вывести текущий список доступа к общей папке:

Удалить группу из списка доступа:

Revoke-SmbShareAccess -Name Scripts -AccountName Everyone –Force

Принудительный запрет на доступ к общей папке (запрещающее разрешение имеет более высокий приоритет):

Block-SmbShareAccess -Name Scripts -AccountName winitproExtUsers -Force

Текущий NTFS ACL для сетевой папки можно получить с помощью команды:

Чтобы изменить права доступа, используйте Set-Acl (подробнее про управление NTFS разрешениями с помощью PowerShell).

Управление открытыми файлами в сетевой папке

Командлеты модуля SMBShare можно использовать для просмотра списка файлов, открытых клиентами в сетевой папке на файловом сервере.

Вывести список открытых файлов с именами пользователей, именами компьютеров (IP адресами), и путями к файлам:

Вывести список файлов, открытых определённым пользователем:

Get-SMBOpenFile –ClientUserName «corpkbuldogov» |select ClientComputerName,Path

Закрыть файл, открытый и заблокированный пользователем:

$sessn = New-CIMSession –Computername msk-fs01
Get-SMBOpenFile -CIMSession $sessn | where <$_.Path –like «*godovoy_otchet_2021.docx»>| Close-SMBOpenFile -CIMSession $sessn

Подключение сетевых дисков с помощью командлетов SmbMapping

Командлеты форматы SbmMapping используются для управления сетевыми дисками.

Чтобы подключить удаленную сетевую папку в сетевой диск U:, выполните команду:

New-SmbMapping -LocalPath U: -RemotePath \msk-man01scripts -UserName kbuldogov -Password mypass –Persistent $true -SaveCredential

  • Без параметра Persistent сетевой диск будет доступен только до перезагрузки компьютера;
  • Параметр SaveCredential позволяет сохранить учетные данные пользователя для подключения в диспетчер учетных данных Windows Credential Manager

Источник

Понравилась статья? Поделить с друзьями:
  • Подлагивает ноутбук что делать windows 10
  • Подключить сетевой диск windows 10 что это
  • Подлагивает windows 10 на мощном пк
  • Подключить сетевой диск windows 10 qnap
  • Подключить сетевой диск windows 10 net use