准备好学习如何使用在本教程中获得的知识来更好地编写 DFS PowerShell 脚本。在这篇文章中,您将了解有关在 PowerShell 中管理 DFS 链接的所有信息!
这篇博客文章有一段由 TechSnips 贡献者 Scott Hurst 制作的配套视频。随时观看,或者如果您更喜欢文本,继续阅读吧!
我的最新视频
分布式文件系统(DFS)链接减少了与网络文件共享的操作复杂性。DFS 链接允许用户和应用程序访问 虚拟路径名称 以连接到共享文件夹。您可以使用 PowerShell 创建 DFS 链接。
无论您是管理活动目录还是其他 DFS 产品,编写 DFS PowerShell 脚本都将帮助您处理遇到的任何问题。
这个 虚拟命名空间 使管理员能够透明地提供位于不同服务器上的共享文件夹,甚至可以更改共享文件夹的位置,而对于该文件夹的使用者来说完全透明。
用户无需更新书签,应用程序也无需更新新路径时的路径。
DFS 的好处
对于用户来说,访问网络共享文件夹简化到 <namespace>\FolderName 格式,降低了与存储在远程服务器上的文件夹相关的复杂性。
对于应用程序,对网络资源的硬编码路径不需要因为网络路径的更改而进行修改。只需简单更新DFS 链接,应用程序将继续访问其新位置的资源。
DFS服务器角色的先决条件
- Active Directory
- 在Windows Server上安装的文件和存储服务角色
- Windows Server(半年频道)
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2012
- Windows Server 2008 R2 Datacenter/Enterprise
先决条件
- 具有适当权限的管理员帐户
- 已安装RSAT工具,并安装了‘文件服务工具 – DFS管理工具’
为DSC PowerShell脚本做好设置
首先,下载并安装RSAT。接下来,您需要安装所有必要的Windows功能。这将安装DFS管理 GUI,DFS命名空间模块,用于使用PowerShell创建DFS 链接并管理它们,以及命令行工具,但不会在服务器上安装任何DFS服务。
常用DFS命令
您可以使用DFS管理 GUI、PowerShell中的DFS命名空间(DFSN) cmdlet、DfsUtil命令或调用WMI的脚本来管理命名空间。
一些常用的PowerShell命令包括:
Get-DfsnRoot
– 在当前域中发现所有DFS命名空间 – 常用于检查当前域中是否有可用的命名空间New-DfsnFolder
– 创建新的DFS文件夹名称
– 常用于在命名空间中创建新的DFS文件夹New-DfsnFolderTarget
– 为DFS文件夹名称分配路径
– 常用于将一个或多个网络文件夹路径分配给DFS文件夹Remove-DfsnFolderTarget
– 从DFS文件夹中删除路径但不删除DFS文件夹。
– 常用于从DFS文件夹中移除一个或多个网络文件夹路径Remove-DfsnFolder
– 删除文件夹及其所有路径
– 常用于从命名空间中删除DFS文件夹
查找DFS命名空间
我们将通过使用Get-DfsnRoot
命令来了解当前域中所有在线和可用的命名空间的情况。
这显示在此域中有两个命名空间处于在线
状态。

查找DFS文件夹
使用Get-DfsnFolder
命令,我们可以列出每个命名空间中的DFS文件夹。
从这个输出中,我们可以看到在AppRoot命名空间中没有名为PowerShell的DFS文件夹。

为DSC PowerShell脚本创建DFS链接文件夹
在这个示例中,我们在我们的三台文件服务器上有一个名为PowerShell的复制文件夹; FileServer01,FileServer02和Datacenter。
目标是使用单个路径与我们的管理员共享此复制文件夹。
为此,我们将在AppRoot 命名空间中创建一个新的DFS 链接文件夹,命名为PowerShell,使用New-DfsnFolder
并将其指向数据中心服务器的文件共享。我们将DFS 文件夹 状态设置为在线,并将TargetPath 状态设置为在线。
在DFS管理GUI中,我们可以看到PowerShell DFS 文件夹不存在。


现在让我们从PowerShell控制台内执行Windows资源管理器,并确认它不存在。
如果文件夹不存在,它将在终端窗口中以绿色文本输出路径未找到。可以继续。如下所示。
从输出中我们可以看到文件夹已经创建,引荐优先级类别
设置为全局-高
,状态
设置为在线
。

GUI也确认了PowerShell告诉我们的内容。

我们的路径现在也可以在Windows资源管理器中使用。

创建DFS文件夹目标
现在我们成功创建了 Powershell DFS 文件夹在 命名空间,向其中添加一个额外的 文件夹目标路径 并将该路径设置为 在线 使用 New-DfsnFolderTarget
。DFS PowerShell 脚本允许您添加任意数量的组件。
到目前为止,我们已经添加了我们三个 服务器路径 的两个,并且它们都在线。对于我们的最后一个 文件夹路径,我们想要添加 路径 但不使其对用户可用。因此,让我们向我们的 PowerShell DFS 文件夹 添加一个 文件夹目标路径,并将此次设置 DFS 旧路径状态为离线我们再次使用 New-DfsnFolderTarget
。

您可以看到 FileServer01 和 Datacenter’s 的路径当前为 在线
,而 FileServer02’s 的状态已被设置为 离线
。

设置 DFS 文件夹目标为离线或在线
我们还可以更改哪些服务器是在线和离线主机,甚至可以使用 `Set-DfsnFolderTarget` 来确定哪个服务器将成为文件路径的主要主机。
如下所示:
- FileServer01 的路径已更改为
离线
- Datacenter 服务器的 `ReferralPriorityClass` 已从 `global-high` 更改为 `sitecost-normal`
- FileServer02 的路径已更改为
在线
- FileServer02 的 `ReferralPriorityClass` 已从 `global-high` 更改为 `global-high`

使用 PowerShell 删除 DFS 文件夹目标路径
I try to vaccinate my code against the fat finger flu as much as possible. Here we will try to install a safety net before removing one of the folders by making sure that it is offline before deleting it.
再见了,FileServer01 文件夹!

对于那些更倾向于放弃安全网选项的人,我们也可以满足你,勇敢的灵魂们。
我们已经告别了FileServer02文件夹。

删除DFS文件夹
这是一个漫长而曲折的道路,但是我们的DFS链接的时间已经到来。我们可以使用Remove-DfsnFolder
命令来移除PowerShell文件夹和DFS链接。

A quick double-check of the DFS Management GUI shows our DFS link is no more.

摘要
就是这样!你已经经历了一条曲折的DFS和PowerShell功夫之路。我希望现在你已经掌握了一些代码片段,可以帮助你构建更好的PowerShell DFS脚本!
Source:
https://adamtheautomator.com/dfs-powershell-scripts/