Как управлять файловыми ресурсами Windows с помощью PowerShell

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

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

Get-Command -Module SMBShare

Модуль SMBShare PowerShell позволяет управлять общей папкой в WindowsМодуль SMBShare PowerShell позволяет управлять общей папкой в Windows

Чтобы отобразить текущую конфигурацию 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

Get-SmbShare - список общих папок в WindowsGet-SmbShare - список общих папок в Windows

Вы можете увидеть несколько административных общих папок и папку 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 *

Get-SmbShare settings withitn powershellПолучить настройки SmbShare с помощью powershell

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

Remove-SmbShare Scripts

Чтобы добавить разрешение на запись для пользователя в список ACL общей папки:

Grant-SmbShareAccess -Name Scripts -AccountName "woshub\b.hoffmann" -AccessRight Change –force

Отобразите текущий список доступа к общей папке:

Get-SmbShareAccess scripts

get-smbshareaccess permissionsget-smbshareaccess permissions

Чтобы удалить группу безопасности из ACL ресурса, выполните следующие действия:

Revoke-SmbShareAccess -Name Scripts -AccountName Everyone –Force

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

Block-SmbShareAccess -Name Scripts -AccountName woshub\ExternalGuests -Force

В большинстве случаев для общей папки следует использовать разрешение Everyone -> RW. В этом случае разрешения папки определяются на уровне NTFS.

Получить текущий 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 в Windows.

Сопоставление сетевых дисков 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

Вы можете использовать GPO для отображения сетевых дисков в Windows.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *