El incorporado SMBShare El módulo PowerShell le permite crear, configurar y administrar carpetas de red compartidas en Windows. En este artículo, veremos cómo administrar archivos compartidos (carpetas de red SMB) usando PowerShell. Puede usar estos ejemplos para administrar rápida y fácilmente sus servidores de archivos SMB y carpetas compartidas en diferentes escenarios de automatización.
El módulo SMBShare contiene 42 cmdlets de PowerShell para administrar carpetas de red compartidas. Puede mostrar la lista completa de cmdlets en el módulo:
Get-Command -Module SMBShare
Para mostrar la configuración actual de su servidor SMB de 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
Puede cambiar las opciones del servidor SMB usando el Establecer-SmbServerConfiguration cmdlet.
Por ejemplo, para deshabilitar el protocolo SMB 1 heredado, ejecute el siguiente comando:
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
Para mostrar una lista de las versiones del protocolo SMB utilizadas por los clientes activos para conectarse a recursos compartidos de archivos en el servidor de archivos SMB actual:
Get-SmbConnection
Para establecer límites de ancho de banda para el tráfico de archivos SMB, puede configurar la política de QoS para su servidor SMB (¿Cómo configurar los límites de ancho de banda SMB?). Por ejemplo, el siguiente comando limitará el ancho de banda máximo para el tráfico SMB a 10 MB:
Set-SmbBandwidthLimit -Category Default -BytesPerSecond 10MB
Creación de una carpeta compartida en Windows con PowerShell
Para mostrar una lista de carpetas compartidas disponibles en una computadora, ejecute este comando:
Get-SmbShare
Puede ver varios recursos compartidos administrativos y el Distribución carpeta compartida en esta computadora.
Para crear una nueva carpeta compartida, ejecute el siguiente comando:
New-SmbShare -Name Scripts -Path C:PS -FullAccess woshubmun_admins, woshubmun-man01$ -ChangeAccess "woshubmun-man01_scripts_rw" -ReadAccess "$env:USERDOMAINdomain users" –description "PowerShell scripts for admin"
En este ejemplo, creamos una carpeta compartida y otorgamos acceso a grupos de dominio y una cuenta de computadora.
Además, al crear una carpeta compartida, puede utilizar las siguientes opciones:
-CachingMode [None|Manual|Programs|Documents|BranchCache]
–establecer un modo de almacenamiento en caché para el acceso sin conexión (archivos sin conexión de Windows);-EncryptData $True
– para habilitar el cifrado de tráfico SMB;-FolderEnumerationMode [AccessBased | Unrestricted]
– para habilitar la enumeración basada en el acceso. Permite ocultar objetos a los que un usuario no tiene permiso para acceder desde la carpeta compartida;-CompressData $True
– para habilitar la compresión al enviar archivos a través de SMB;-ConcurrentUserLimit 50
– establecer un límite de conexiones simultáneas a la carpeta (0 por defecto, ilimitado);-Temporary
– para crear una carpeta compartida temporal (desaparece después del próximo reinicio de Windows).
Puede mostrar una lista completa de configuraciones de carpetas compartidas:
Get-SmbShare -Name scripts| select *
Para eliminar una carpeta compartida de red:
Remove-SmbShare Scripts
Para agregar permiso de escritura para un usuario a la lista ACL de la carpeta compartida:
Grant-SmbShareAccess -Name Scripts -AccountName "woshubb.hoffmann" -AccessRight Change –force
Mostrar la lista de acceso a la carpeta compartida actual:
Get-SmbShareAccess scripts
Para eliminar un grupo de seguridad de la ACL de un recurso compartido:
Revoke-SmbShareAccess -Name Scripts -AccountName Everyone –Force
Para forzar el bloqueo del acceso a una carpeta compartida (un permiso de denegación tiene mayor prioridad):
Block-SmbShareAccess -Name Scripts -AccountName woshubExternalGuests -Force
En la mayoría de los casos, debe usar los permisos Todos -> RW en una carpeta compartida. En este caso, los permisos de las carpetas se determinan a nivel de NTFS.
Puede obtener la ACL de NTFS actual para una carpeta compartida con este comando:
(get-acl \mun-man01scripts).access
Para cambiar los permisos de NTFS, use el Set-Acl cmdlet (obtenga más información sobre cómo administrar los permisos de NTFS mediante PowerShell).
¿Cómo ver y administrar archivos abiertos en recursos compartidos de Windows?
Puede usar los cmdlets de SMBShare para ver una lista de archivos abiertos por los usuarios en una carpeta compartida en un servidor de archivos de Windows.
Para mostrar una lista de archivos abiertos con nombres de usuario, nombres de computadora (direcciones IP) y rutas de archivos:
Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID
Para mostrar una lista de archivos abiertos por un usuario específico:
Get-SMBOpenFile –ClientUserName "woshubb.hoffmann" |select ClientComputerName,Path
Para cerrar un archivo que un usuario abrió y bloqueó por un usuario remoto:
$sessn = New-CIMSession –Computername munfs01
Get-SMBOpenFile -CIMSession $sessn | where {$_.Path –like "*sale_report2022.docx"} | Close-SMBOpenFile -CIMSession $sessn
Asigne unidades de red SMB con cmdlets SmbMapping
Los cmdlets SmbMapping se utilizan para administrar unidades de red.
Para asignar una carpeta compartida de red a la unidad de red tu:ejecute el siguiente comando:
New-SmbMapping -LocalPath U: -RemotePath \munfs01scripts -UserName b.hoffmann -Password my22pass –Persistent $true -SaveCredential
- Sin el Persistente opción, la unidad de red asignada solo estará disponible hasta que se reinicie la computadora;
- los Guardar Credencial La opción permite guardar las credenciales de usuario en el Administrador de credenciales de Windows.
Para mostrar una lista de carpetas de red asignadas:
Get-SmbMapping
Para eliminar una unidad de red:
Remove-SmbMapping U: -force
Artículos Interesantes
Contenido