Windows Server Core 管理与 PowerShell 笔记(六)———— 文件共享

2019-04-06 293 Words Windows Powershell

Windows Server Core 管理与 PowerShell 笔记(六)———— 文件共享

一、SMB/CIFS 协议

Windows 使用 SMB/CIFS 协议来承载文件共享和打印机共享等网络共享服务。这一部分文章就将开始介绍 Windows 的文件共享相关知识和架构。主要包括文件共享设置、共享文件等权限设置、如何挂载网络驱动器等。 在 PowerShell 中,SMBShare 模块中的 Comlet 用来配置 SMB 共享,本文也将介绍该模块中的一些最常用的指令。

此外 Windows 还有网络文件系统(NFS)的相关指令。

二、管理 SMB 客户端和服务器端配置

在 PowerShell 中,主要使用 Get-SmbClientConfigurationSet-SmbClientConfiguration 两个指令来读取和写入 SMB 客户端的配置信息。主要配置包括缓存寿命、超时时间等。通常情况下,这些配置不需要怎么改动。

同样使用 Get-SmbServerConfigurationSet-SmbServerConfiguration 来读取和修改服务器端的配置信息。通常也按需修改即可。

三、管理文件共享

Get-SmbShareSet-SmbShare 这一对指令可以用来查看和修改当前系统中的文件共享。

PS C:\Users\ertuil> Get-SmbShare

Name   ScopeName Path            Description
----   --------- ----            -----------
ADMIN$ *         C:\Windows      远程管理
C$     *         C:\             默认共享
E$     *         E:\             默认共享
ertuil *         C:\Users\ertuil
IPC$   *                         远程 IPC

PS C:\Windows\system32>  Set-SmbShare -Name 'ertuil' -EncryptData $True

确认
是否确实要执行此操作?
正在执行操作“Modify”(针对目标“*,ertuil”)。
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“Y”):

在上面的例子中我们读取了当前的 SMBShare 信息,并将共享名为 ‘ertuil’ 的共享修改属性 -EncryptData 为 True。

四、新建和销毁文件共享

命令 New-SmbShare 用来新建一个文件共享。主要参数有:

  • -Name 共享名称
  • -Path 共享文件夹位置
  • -Description 描述。可选
  • -EncryptData 是否加密?参数为 Boolean 值。可选。
  • -FullAccess 完全控制权限。而后接主体名,比如“webserver/ertuil”。可选。
  • -NoAccess 没有权限。而后接主体名。可选。
  • -ReadAccess 只读权限。而后接主体名。可选。

下面的例子中新建了一个文件共享:

PS C:\Windows\system32> new-smbshare -Name ertuil -Path 'C:\Users\ertuil\' -FullAccess "webserver\ertuil"

Name   ScopeName Path            Description
----   --------- ----            -----------
ertuil *         C:\Users\ertuil

命令 Remove-SmbShare 用来删除一个 Smb 共享。通过 -Name 指定共享名称。

PS C:\Windows\system32>  Remove-SmbShare -Name 'ertuil'

确认
是否确实要执行此操作?
正在执行操作“Remove-Share”(针对目标“*,ertuil”)。
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“Y”): Y

五、文件共享权限设置

文件共享的权限在新建共享时,就已经指定了。但是我们可以使用下面几个命令来追加、撤回权限。

Grant-SmbShareAccess 用于授予新权限:

  • -Name 指定共享名称
  • -AccessRight {Full | Change | Read | Custom} 指定权限。
  • -AccountName 指定授权对象

Revoke-SmbShareAccess 用于撤回某一个权限:

  • -Name 指定共享名称
  • -AccountName 指定授权对象

Block-SmbShareAccess 用于拒绝某一个用户的访问,参数与上面一样。

UnBlock-SmbShareAccess 用于取消拒绝某一个用户的访问,参数与上面一样。

Get-SmbShareAccess 用于查询一个共享的权限。使用 -Name 指定共享名:

PS C:\Windows\system32> Get-SmbShareAccess -Name ertuil

Name   ScopeName AccountName      AccessControlType AccessRight
----   --------- -----------      ----------------- -----------
ertuil *         WEBSERVER\ertuil Allow             Full

六、PowerShell 挂载一个网络驱动器

之前有说到,PowerShell 有广义的驱动器变量。因此我们也可以非常容易的挂载一个网络文件系统,并加以访问。

具体命令是 New-PSDrive 我们需要使用的具体参数有:

  • -Name 驱动器名称,如 C, D, P, ns 等
  • -Root 挂载源位置,比如 \\webserver\ertuil
  • -PSProvider 一般是 FileSystem。
  • -Persist 持久挂载。
  • -Description 描述

例如挂载共享出来的 ertuil 文件夹:

PS C:\Windows\system32> New-PSDrive -Name P -Root //webserver/ertuil -PSProvider FileSystem

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
P                                      FileSystem    //webserver/ertuil

七、网络文件系统(NFS)

PowerShell 的文件系统的命令和 SMB 基本对偶,在此不再详细介绍。如有需要请自行查阅文档。

八、总结

本文主要介绍了 Windows 的文件共享的相关操作方式。