Set-SmbServerConfiguration

Sets the Server Message Block (SMB) server configuration.

Syntax

Set-SmbServerConfiguration
   [-AnnounceComment <String>]
   [-AnnounceServer <Boolean>]
   [-AsynchronousCredits <UInt32>]
   [-AuditClientCertificateAccess <Boolean>]
   [-AuditClientDoesNotSupportEncryption <Boolean>]
   [-AuditClientDoesNotSupportSigning <Boolean>]
   [-AuditInsecureGuestLogon <Boolean>]
   [-AuditSmb1Access <Boolean>]
   [-AutoDisconnectTimeoutInMinutesV1 <UInt32>]
   [-AutoDisconnectTimeoutInSecondsV2 <UInt32>]
   [-AutoShareServer <Boolean>]
   [-AutoShareWorkstation <Boolean>]
   [-CachedOpenLimit <UInt32>]
   [-EnableDirectoryHandleLeasing <Boolean>]
   [-DisableCompression <Boolean>]
   [-DisableSmbEncryptionOnSecureConnection <Boolean>]
   [-DurableHandleV2TimeoutInSeconds <UInt32>]
   [-EnableAuthenticateUserSharing <Boolean>]
   [-EnableDownlevelTimewarp <Boolean>]
   [-EnableForcedLogoff <Boolean>]
   [-EnableLeasing <Boolean>]
   [-EnableMailslots <Boolean>]
   [-EnableMultiChannel <Boolean>]
   [-EnableOplocks <Boolean>]
   [-EnableSecuritySignature <Boolean>]
   [-EnableSMB1Protocol <Boolean>]
   [-EnableSMB2Protocol <Boolean>]
   [-EnableSMBQUIC <Boolean>]
   [-EnableStrictNameChecking <Boolean>]
   [-EncryptData <Boolean>]
   [-EncryptionCiphers <String>]
   [-InvalidAuthenticationDelayTimeInMs <UInt32>]
   [-IrpStackSize <UInt32>]
   [-KeepAliveTime <UInt32>]
   [-MaxChannelPerSession <UInt32>]
   [-MaxMpxCount <UInt32>]
   [-MaxSessionPerConnection <UInt32>]
   [-MaxThreadsPerQueue <UInt32>]
   [-MaxWorkItems <UInt32>]
   [-NullSessionPipes <String>]
   [-NullSessionShares <String>]
   [-OplockBreakWait <UInt32>]
   [-PendingClientTimeoutInSeconds <UInt32>]
   [-RejectUnencryptedAccess <Boolean>]
   [-RequestCompression <Boolean>]
   [-RequireSecuritySignature <Boolean>]
   [-RestrictNamedpipeAccessViaQuic <Boolean>]
   [-ServerHidden <Boolean>]
   [-Smb2CreditsMax <UInt32>]
   [-Smb2CreditsMin <UInt32>]
   [-Smb2DialectMax <Smb2DialectMax>]
   [-Smb2DialectMin <Smb2DialectMin>]
   [-SmbServerNameHardeningLevel <UInt32>]
   [-TreatHostAsStableStorage <Boolean>]
   [-ValidateAliasNotCircular <Boolean>]
   [-ValidateShareScope <Boolean>]
   [-ValidateShareScopeNotAliased <Boolean>]
   [-ValidateTargetName <Boolean>]
   [-Force]
   [-CimSession <CimSession[]>]
   [-ThrottleLimit <Int32>]
   [-AsJob]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

The Set-SmbServerConfiguration cmdlet sets the Server Message Block (SMB) Service configuration. For more information on SMB server and protocol specifications, see Overview of file sharing using the SMB 3 protocol in Windows Server and [MS-SMB2]:Server Message Block (SMB) Protocol Versions 2 and 3.

Examples

Example 1: Set the SMB Service configuration

Set-SmbServerConfiguration -MaxChannelPerSession 16 -Confirm:$false

This command sets the SMB Service configuration without user confirmation.

Example 2: Turn on SMB signing and encryption

$Parameters = @{
    RequireSecuritySignature = $true
    EnableSecuritySignature = $true
    EncryptData = $true
    Confirm = $false
}
Set-SmbServerConfiguration @Parameters

This command turns on SMB signing and encryption without user confirmation. This example uses splatting to pass parameter values from the $Parameters variable to the command. Learn more about Splatting.

Example 3: Turn off the default server and workstations shares

Set-SmbServerConfiguration -AutoShareServer $false -AutoShareWorkstation $false -Confirm:$false

This command turns off the default server and workstations shares without user confirmation.

Example 4: Turn off server announcements

Set-SmbServerConfiguration -ServerHidden $false -AnnounceServer $false -Confirm:$false

This command turns off server announcements without user confirmation.

Example 5: Turn off SMB1

Set-SmbServerConfiguration -EnableSMB1Protocol $false -Confirm:$false

This command disables SMB1 on the SMB server without user confirmation.

Example 6: Specify encryption ciphers

Set-SmbServerConfiguration -EncryptionCiphers "AES_128_GCM, AES_256_GCM" -Confirm:$false

This command specifies the encryption ciphers used by the SMB client, and the preferred order without user confirmation.

Parameters

-AnnounceComment

Specifies the announce comment string.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AnnounceServer

Indicates that this server announces itself by using browser announcements.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AsJob

Runs the cmdlet as a background job. Use this parameter to run commands that take a long time to complete.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AsynchronousCredits

Specifies the asynchronous credits.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AuditClientCertificateAccess

Enables SMB over QUIC client access control audit events. There are three possible events: access allowed, access denied, and error. The access allowed and access denied events list properties of the client certificate chain and any allow and deny access control entries that apply to the client certificates.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AuditClientDoesNotSupportEncryption

Enables auditing of SMB clients that don't support encryption. Clients that connect and don't list SMB encryption in their supported capabilities will be recorded in the Windows event log.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AuditClientDoesNotSupportSigning

Enables auditing of the clients attempts to connect without signing to the server. The server logs an audit event when a client attempts to connect to the server without using message signing.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AuditInsecureGuestLogon

Specifies whether to audit insecure guest logon attempts. When enabled insecure guest logons will appear in Windows Event Viewer.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AuditSmb1Access

Enables the auditing of SMB version 1 protocol behavior.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AutoDisconnectTimeoutInMinutesV1

Specifies the v1 auto disconnect time-out period, in minutes.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AutoDisconnectTimeoutInSecondsV2

Specifies the v2 auto disconnect time-out period, in seconds.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AutoShareServer

Indicates that the default server shares are shared out.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AutoShareWorkstation

Indicates whether the default workstation shares are shared out.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CachedOpenLimit

Specifies the maximum number of cached open files.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimSession

Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.

Type:CimSession[]
Aliases:Session
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Prompts you for confirmation before running the cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableCompression

Indicates that the SMB server should never compress files even if client or application requested it.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableSmbEncryptionOnSecureConnection

Specifies that SMB encryption will also be used if configured on the SMB server. By default, QUIC encryption only is used in order to avoid double encryption affecting performance unnecessarily. If a client requires SMB encryption using Set-SmbClientConfiguration -ForceSMBEncryptionOverQuic $true then the DisableSmbEncryptionOnSecureConnection value is ignored and SMB encryption occurs.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DurableHandleV2TimeoutInSeconds

Specifies the durable handle v2 time-out period, in seconds.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableAuthenticateUserSharing

Indicates whether authenticate user sharing is enabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableDirectoryHandleLeasing

Enables directory handle leasing on the server. When directory handle leasing is enabled, the server can cache directory handles for a longer period of time, which can improve performance for certain workloads. This can be particularly useful in scenarios where there are a large number of directory operations being performed on the server.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableDownlevelTimewarp

Indicates whether down-level timewarp support is disabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableForcedLogoff

Indicates whether forced logoff is enabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableLeasing

Indicates whether leasing is disabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableMailslots

Specifies whether to enable mailslots. If this parameter is specified, mailslots will be enabled. Beginning with Windows Server 2025 and Windows 11 Insider Preview Build 25314, remote mailslots are disabled by default.

To learn more about remote mailslot deprecation, see Features removed or no longer developed starting with Windows Server 2025.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableMultiChannel

Indicates whether multi-channel is disabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableOplocks

Indicates whether the opportunistic locks are enabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableSecuritySignature

Indicates whether the security signature is enabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableSMB1Protocol

Indicates whether the SMB1 protocol is enabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableSMB2Protocol

Indicates whether the SMB2 protocol is enabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableSMBQUIC

Indicates whether the SMB over QUIC protocol is enabled.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableStrictNameChecking

Indicates whether the server should perform strict name checking on incoming connects.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EncryptData

Indicates whether the sessions established on this server are encrypted.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EncryptionCiphers

Specifies the encryption ciphers used by the SMB server and the preferred order.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Forces the command to run without asking for user confirmation.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InvalidAuthenticationDelayTimeInMs

Specifies the length of time in milliseconds that the server should delay before responding to an authentication request that has been deemed invalid, such as an incorrect user name or password.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IrpStackSize

Specifies the default IRP stack size.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-KeepAliveTime

Specifies the keep alive time.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxChannelPerSession

Specifies the maximum channels per session.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxMpxCount

Specifies the maximum MPX count for SMB1.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxSessionPerConnection

Specifies the maximum sessions per connection.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxThreadsPerQueue

Specifies the maximum threads per queue.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxWorkItems

Specifies the maximum SMB1 work items.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NullSessionPipes

Specifies the null session pipes.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NullSessionShares

Specifies the null session shares.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OplockBreakWait

Specifies how long the create caller waits for an opportunistic lock break.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PendingClientTimeoutInSeconds

Specifies the pending client time-out period, in seconds.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RejectUnencryptedAccess

Indicates whether the client that doesn't support encryption is denied access if it attempts to connect to an encrypted share.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RequestCompression

Indicates if SMB server should always request compression even if client or application didn't specify it.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RequireSecuritySignature

Indicates whether the security signature is required.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RestrictNamedpipeAccessViaQuic

Specifies that named pipes are allowed when using SMB over QUIC. A value of $true prevents use of named pipes and is the default.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ServerHidden

Indicates whether the server announces itself.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Smb2CreditsMax

Specifies the maximum SMB2 credits.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Smb2CreditsMin

Specifies the minimum SMB2 credits.

Type:UInt32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Smb2DialectMax

This parameter specifies the maximum version of the SMB protocol to be used. Acceptable values are:

  • None - There is no maximum protocol version specified, the server can use any supported version.
  • SMB202 - SMB 2.0.2 is the maximum version accepted by the SMB Server
  • SMB210 - SMB 2.1.0 is the maximum version accepted by the SMB Server
  • SMB300 - SMB 3.0.0 is the maximum version accepted by the SMB Server
  • SMB302 - SMB 3.0.2 is the maximum version accepted by the SMB Server
  • SMB311 - SMB 3.1.1 is the maximum version accepted by the SMB Server
Type:SwitchParameter
Accepted values:None, SMB202, SMB210, SMB300, SMB302, SMB311
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Smb2DialectMin

This parameter specifies the minimum version of the SMB protocol to be used. Acceptable values are:

  • None - There is no maximum protocol version specified, the server can use any supported version.
  • SMB202 - SMB 2.0.2 is the maximum version accepted by the SMB Server
  • SMB210 - SMB 2.1.0 is the maximum version accepted by the SMB Server
  • SMB300 - SMB 3.0.0 is the maximum version accepted by the SMB Server
  • SMB302 - SMB 3.0.2 is the maximum version accepted by the SMB Server
  • SMB311 - SMB 3.1.1 is the maximum version accepted by the SMB Server
Type:Smb2DialectMin
Accepted values:None, SMB202, SMB210, SMB300, SMB302, SMB311
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SmbServerNameHardeningLevel

Controls the level of validation that a server performs on the service principal name (SPN) that is provided by the client device when the client establishes a session using Server Message Block (SMB). The acceptable values are:

  • 0: Don't enforce SPN check.
  • 1: Allow clients who didn't provide the target, but fail those who do provide the target and it doesn't match.
  • 2: Only allow clients who supply matching targets.
Type:UInt32
Accepted values:0, 1, 2
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThrottleLimit

Specifies the maximum number of concurrent operations that can be established to run the cmdlet. If this parameter is omitted or a value of 0 is entered, then Windows PowerShell calculates an optimum throttle limit for the cmdlet based on the number of CIM cmdlets that are running on the computer.

The throttle limit applies only to the current cmdlet, not to the session or to the computer.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TreatHostAsStableStorage

Indicates whether the host is treated as the stable storage.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ValidateAliasNotCircular

Indicates whether the aliases that aren't circular are validated.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ValidateShareScope

Indicates that the existence of share scopes is checked during share creation.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ValidateShareScopeNotAliased

Indicates whether the share scope being aliased is validated.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ValidateTargetName

Indicates whether the target name is validated.

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet isn't run.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Inputs

None

Outputs

Object