
Встроенный SMBShare Модуль PowerShell позволяет создавать, настраивать и управлять общими сетевыми папками в Windows. В этой статье мы рассмотрим, как управлять общими файловыми ресурсами (сетевыми папками SMB) с помощью PowerShell. Вы можете использовать эти примеры для быстрого и простого управления файловыми серверами SMB и общими папками в различных сценариях автоматизации.
Модуль SMBShare содержит 42 команды PowerShell для управления общими сетевыми папками. Вы можете просмотреть полный список команд в модуле:
Get-Command -Module SMBShare
Чтобы отобразить текущую конфигурацию SMB-сервера Windows:
Get-SmbServerConfiguration
AnnounceComment : 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 : True 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
Вы можете изменить параметры SMB-сервера с помощью команды Set-SmbServerConfiguration команда.
Например, чтобы отключить устаревший протокол SMB 1, выполните следующую команду:
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
Чтобы отобразить список версий протокола SMB, используемых активными клиентами для подключения к файловым ресурсам на текущем файловом сервере SMB:
Get-SmbConnection
Чтобы установить ограничения пропускной способности для файлового трафика SMB, вы можете настроить политику QoS для вашего сервера SMB (Как настроить ограничения пропускной способности SMB?). Например, команда ниже ограничит максимальную полосу пропускания для SMB-трафика до 10 МБ:
Set-SmbBandwidthLimit -Category Default -BytesPerSecond 10MB
Создание общей папки в Windows с помощью PowerShell
Чтобы отобразить список общих папок, доступных на компьютере, выполните эту команду:
Get-SmbShare
Вы можете увидеть несколько административных общих папок и папку Distr общая папка на этом компьютере.
Чтобы создать новую общую папку, выполните приведенную ниже команду:
New-SmbShare -Name Scripts -Path C:\PS -FullAccess woshub\mun_admins, woshub\mun-man01$ -ChangeAccess "woshub\mun-man01_scripts_rw" -ReadAccess "$env:USERDOMAIN\domain users" –description "PowerShell scripts for admin"
В этом примере мы создали общую папку и предоставили доступ группам домена и одной учетной записи компьютера.
Кроме того, при создании общей папки можно использовать следующие параметры:
-CachingMode [None|Manual|Programs|Documents|BranchCache]
-установить режим кэширования для автономного доступа (автономные файлы Windows);-EncryptData $True
— включить шифрование SMB-трафика;-FolderEnumerationMode [AccessBased | Unrestricted]
— включить перечисление на основе доступа. Позволяет скрыть объекты, к которым у пользователя нет разрешения на доступ, из общей папки;-CompressData $True
— включить сжатие SMB для передачи файлов;-ConcurrentUserLimit 50
— установить ограничение на количество одновременных подключений к папке (по умолчанию 0, без ограничений);-Temporary
— создать временную общую папку (исчезает после следующего перезапуска Windows).
Можно отобразить полный список параметров общей папки:
Get-SmbShare -Name scripts| select *
Чтобы удалить общую сетевую папку:
Remove-SmbShare Scripts
Чтобы добавить разрешение на запись для пользователя в список ACL общей папки:
Grant-SmbShareAccess -Name Scripts -AccountName "woshub\b.hoffmann" -AccessRight Change –force
Отобразите текущий список доступа к общей папке:
Get-SmbShareAccess scripts
Чтобы удалить группу безопасности из ACL ресурса, выполните следующие действия:
Revoke-SmbShareAccess -Name Scripts -AccountName Everyone –Force
Чтобы принудительно заблокировать доступ к общей папке (запрещающее разрешение имеет более высокий приоритет):
Block-SmbShareAccess -Name Scripts -AccountName woshub\ExternalGuests -Force
Получить текущий NTFS ACL для общей папки можно с помощью этой команды:
(get-acl \\mun-man01\scripts).access
Чтобы изменить разрешения NTFS, используйте команду Set-Acl команда.
Как просматривать и управлять открытыми файлами в общем доступе Windows?
Вы можете использовать команды SMBShare для просмотра списка файлов, открытых пользователями в общей папке на файловом сервере Windows.
Чтобы отобразить список открытых файлов с именами пользователей, именами компьютеров (IP-адресами) и путями к файлам:
Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID
Чтобы отобразить список файлов, открытых определенным пользователем:
Get-SMBOpenFile –ClientUserName "woshub\b.hoffmann" |select ClientComputerName,Path
Чтобы закрыть файл, открытый пользователем и заблокированный удаленным пользователем:
$sessn = New-CIMSession –Computername munfs01
Get-SMBOpenFile -CIMSession $sessn | where {$_.Path –like "*sale_report2022.docx"} | Close-SMBOpenFile -CIMSession $sessn
Сопоставление сетевых дисков SMB с помощью командлетов SmbMapping
Команды SmbMapping используются для управления сетевыми дисками.
Чтобы сопоставить сетевую общую папку с сетевым диском U:, выполните приведенную ниже команду:
New-SmbMapping -LocalPath U: -RemotePath \\munfs01\scripts -UserName b.hoffmann -Password my22pass –Persistent $true -SaveCredential
- Без Стойкий опция, то сопоставленный сетевой диск будет доступен только до перезагрузки компьютера;
- [SaveCredential опция позволяет сохранять учетные данные пользователя в диспетчере учетных данных Windows.
Чтобы отобразить список сопоставленных сетевых папок:
Get-SmbMapping
Чтобы удалить сетевой диск:
Remove-SmbMapping U: -force