PowerShell 3 makes it very easy to create a network share in Windows 8 and Windows Server 2012.  PowerShell 3 brings with it a whole plethora of new commands.  Most of the new cmdlets in PowerShell 3 are grouped together into modules that are easy to browse and load.

Creating a new network share is done with the SMBShare module.  You do not need to load the module as you would have in previous versions of PowerShell.  Cmdlets in unloaded modules are listed in the get-command results, and the module is loaded the first time one of the cmdlets is run.

How to Create a Network Share with PowerShell 3

To begin, you’ll need a folder to share.  This is created with the New-Item cmdlet, instead of a cmdlet in the SMBShare module.

New-Item “C:\Shared" –type directory

If you are creating multiple levels at once (like “C:\NewRootFolder\NewChildFolder\NewShared” you can add the –force switch to make it create all necessary parent folders in the heirarchy)

Now that you have a folder that you want to share, you can turn it into a shared folder using the New-SMBShare cmdlet.

New-SMBShare –Name “Shared” –Path “C:\Shared” `
 –ContinuouslyAvailable `
 –FullAccess domain\admingroup  ` 
 -ChangeAccess domain\deptusers `
 -ReadAccess “domain\authenticated users”

Create a Network Share with PowerShell – The Parameters

Here are the parameters that you may need to get just the right experience for your network shares.

Parameter Name Input Type Required Description
CATimeout Integer No How many seconds to wait before failing.
CachingMode Choice:
None, Manual, Documents, Programs, BranchCache, Unknown
No The caching policy for the share.
ChangeAccess String or String Array No Users to grant Read/Write access to.
Concurrent User Limit Integer No How many users can access the share at a time.
ContinuouslyAvailable Boolean (switch) No Whether to keep the share after the next reboot.
Description String No Friendly description of the share.
EncryptData Boolean (switch) No Use to turn on file encryption.
FolderEnumerationMode Choice:
AccessBased, Unrestricted
No Choose when folders are enumerated (listed) in the share.
FullAccess String or String Array No Users to grant Full control to.
Name String Yes Name of the share.
NoAccess String or String Array No Users to deny access to.
Path String Yes The file path to the shared folder.
ReadAccess String or String Array No Users to grant Read Only access to.
ScopeName String No Name of the endpoint that the share is scoped to.
Temporary Boolean (switch) No Share removed after reboot.
ThrottleLimit Integer No Limit the resources of the share.
AsJob Boolean (switch) No Create a Job to background process this command

How To Change or Remove Network Shares with PowerShell

Here are the other cmdlets in the SMBShare module:

  • Block-SmbShareAccess
  • Close-SmbOpenFile
  • Close-SmbSession
  • Get-SmbClientConfiguration
  • Get-SmbClientNetworkInterface
  • Get-SmbConnection
  • Get-SmbMapping
  • Get-SmbMultichannelConnection
  • Get-SmbOpenFile
  • Get-SmbServerConfiguration
  • Get-SmbServerNetworkInterface
  • Get-SmbSession
  • Get-SmbShare
  • Get-SmbShareAccess
  • Grant-SmbShareAccess
  • New-SmbMapping
  • New-SmbShare
  • Remove-SmbMapping
  • Remove-SmbShare
  • Revoke-SmbShareAccess
  • Set-SmbClientConfiguration
  • Set-SmbServerConfiguration
  • Set-SmbShare
  • Unblock-SmbShareAccess
  • Update-SmbMultichannelConnection

I hope this has helped you in your day!