运行环境:Windows Server 2012 R2

DFS复制组 PowerShell脚本命令

需要注意的是DFS依赖域,若此服务器未存在于域控上,或未存在域内,则此脚本会报错

此脚本可在域内任意服务器执行

脚本创建的是交错型拓扑结构,使用的默认计划

检测是否存在复制组时,有一种情况会检查错误,就是查看复制组时报错误。

# 创建DFS复制
# author:lttr <www.cnblogs.com/GoCircle>
# date:2019-08-09
# eg.
# C:\dfsr.ps1 -Domain "test.to" -DfsN "DFSN01" -GroupName "RG01" -FolderName "dfs" -ShareFolderPhysicalPath "C:\DFShare\dfs" -SourceComputerName "WIN01" -servers "WIN02","WIN03","WIN04" [CmdletBinding()]
param
(
# 域名
[Parameter(Mandatory=$true,Position=0)][string]$Domain,
# DFS命名空间名称
[Parameter(Mandatory=$true,Position=1)][string]$DfsN,
# 复制组名称
[Parameter(Mandatory=$true,Position=2)][string]$GroupName,
# 复制组文件夹名称
[Parameter(Mandatory=$true,Position=3)][string]$FolderName,
# 共享文件夹物理路径
[Parameter(Mandatory=$true,Position=4)][string]$ShareFolderPhysicalPath,
# DFS成员列表
[Parameter(Mandatory=$true,Position=6)][String[]]$servers
)
# 域内远程设置共享文件夹
function SET-Share($DriveLetter,$ShareFolderPhysicalPath,$ShareFolderNetworkPath,$Server){
if(!(Test-Path \\$Server\$DriveLetter$\$ShareFolderPhysicalPath)){
$null = New-Item -Path \\$Server\$DriveLetter$\$ShareFolderPhysicalPath -type directory -Force
}
$Shares = [WMICLASS]"\\$Server\root\cimv2:WIN32_Share"
$null = $Shares.Create($DriveLetter+":\"+$ShareFolderPhysicalPath,$ShareFolderNetworkPath,0)
} try {
#检测是否发布到命名空间
if(Get-DfsnFolderTarget -Path "\\$Domain\$DfsN\$FolderName" -ErrorAction SilentlyContinue) {
Write-Host "DFS复制组[$GroupName]已存在!" -ForegroundColor Red
}else{
# 设置复制组
$null = New-DfsReplicationGroup -GroupName $GroupName | New-DfsReplicatedFolder -GroupName $GroupName -FolderName $FolderName -DfsnPath "\\$Domain\$DfsN\$FolderName" -WarningAction silentlyContinue | Add-DfsrMember -ComputerName $servers
# 设置连接和成员身份
for($i=0;$i -le $servers.Length-1;$i++){
for($j=$i+1;$j -le $servers.Length-1;$j++){
$null = Add-DfsrConnection -GroupName $GroupName -SourceComputerName $servers[$i] -DestinationComputerName $servers[$j]
}
}
foreach ($server in $servers) {
# 为命名空间新建文件夹目标
$null = New-DfsnFolderTarget -Path "\\$Domain\$DfsN\$FolderName" -TargetPath "\\$server.$Domain\$FolderName" -State "Online" -ReferralPriorityClass "sitecostnormal"
# 设置共享文件夹
SET-Share ($ShareFolderPhysicalPath -split ":")[0] ($ShareFolderPhysicalPath -split ":\\")[-1] $FolderName $server
# 设置复制组成员的本地路径
$null = Set-DfsrMembership -GroupName $GroupName -FolderName $FolderName -ComputerName $server -PrimaryMember $True -ContentPath $ShareFolderPhysicalPath -Force
}
# 更新本地DFSR配置信息
Update-DfsrConfigurationFromAD -ComputerName $servers
#检测是否发布到命名空间
if(Get-DfsnFolderTarget -Path "\\$Domain\$DfsN\$FolderName" -ErrorAction SilentlyContinue) {
Write-Host "创建DFS复制组[$GroupName]成功!" -ForegroundColor Green
}else{
Write-Host "创建DFS复制组[$GroupName]失败!" -ForegroundColor Red
}
}
} catch {
Write-Host "创建DFS复制组[$GroupName]失败!" -ForegroundColor Red
}

使用PowerShell 自动创建DFS复制组的更多相关文章

  1. 使用PowerShell 自动创建DFS命名空间服务器

    运行环境:Windows Server 2012 R2 DFS命名空间概述 DFS命名空间 PowerShell脚本命令 Writing PowerShell DFS Scripts: Managin ...

  2. sql自动创建表并复制数据

    ---------------自动创建表并复制数据sql,需要自己设置主键----------- select * into 新表 from 旧表

  3. 使用MyBatis Generator自动创建代码

    SSM框架--使用MyBatis Generator自动创建代码 1. 目录说明 使用自动生成有很多方式,可以在eclipse中安装插件,但是以下将要介绍的这种方式我认为很轻松,最简单,不需要装插件, ...

  4. sql2008 计划自动创建数据库分区【转】

    本文转自:http://jingyan.baidu.com/article/6b97984d9a26ec1ca3b0bf77.html sql2008 计划自动创建数据库分区 固定增量的数据,自动创建 ...

  5. 1.5 外部销售自动创建为内部PR

    1.5          外部销售自动创建为内部PR 1.5.1   业务方案描述 外部销售订单登记后,在销售订单录入界面点击一个创建内部申请按钮,自动将外部销售订单创建为内部申请,创建后将不得再次创 ...

  6. Do You Kown Asp.Net Core - 根据实体类自动创建Razor Page CURD页面模板

    Scaffolding Template Intro 我们知道在Asp.Net MVC中,如果你使用的EF的DBContext的话,你可以在vs中通过右键解决方案-添加控制器-添加包含视图的控制器,然 ...

  7. 如何用SQL脚本在SQL Server Replication中创建合并复制,以及怎么创建分区合并复制

    假设我们要创建合并复制的发布端数据库是EFDemo其中有四张表,订阅端数据库是EFDemoSubscription,如下图所示: 首先创建发布端快照代理Sql agent job:"EFDe ...

  8. OpenCV(C++版)图像读取,创建,复制,保存,显示

    http://blog.163.com/yuyang_tech/blog/static/21605008320132642254689/ 一个小例子: #include "stdafx.h& ...

  9. SpringBoot+Mybatis 自动创建数据表(适用mysql)

    Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...

随机推荐

  1. electron-vue 引入OpenLayer 报错 Unexpected token export

    electron-vue 引入OpenLayer 报错 Unexpected token export 解决办法: 在 .electron-vue/webpack.renderer.config.js ...

  2. 对ACID的深层解读

    A:Atomieity 通常,原子指不可分解为更小粒度的东西,该术语在计算机的不同领域里面有着相似但却微妙的差异.在多线程并发编程中,如果某线程执行一个原子操作,这意味着其他线程是无法看到该结果的中间 ...

  3. [Python之路] 使用装饰器给Web框架添加路由功能(静态、动态、伪静态URL)

    一.观察以下代码 以下来自 Python实现简易HTTP服务器与MINI WEB框架(利用WSGI实现服务器与框架解耦) 中的mini_frame最后版本的代码: import time def in ...

  4. jquery toggle()方法 语法

    jquery toggle()方法 语法 作用:toggle() 方法用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件.该方法也可用于切换被选元素的 hide() 与 sho ...

  5. Https Get Post

    #region Http 访问 public string GetHttpUrl(string Url) { try { HttpWebRequest request = (HttpWebReques ...

  6. luogu 1593 因子和 约数+线性筛

    等比数列那里忘判项数等于 $1$ 的情况了. Code: #include <cstdio> #include <vector> #include <algorithm& ...

  7. Netty入门官方例子

    参考链接:https://blog.csdn.net/wocjy/article/details/78661464 maven依赖: <!-- Netty开始 --> <!-- ht ...

  8. 代码审计之CVE-2019-9081 Laravel5.7 反序列化 RCE复现分析

    本文首发于先知社区:https://xz.aliyun.com/t/5510 环境: php7.2+apache+laravel5.7 漏洞描述: Laravel Framework是Taylor O ...

  9. JVM----Java内存模型与线程

    我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等 ...

  10. phpStrom破解 + Your license has expired

    找到 C:\Windows\System32\drivers\etc 的 hosts文件在最后加上"0.0.0.0 account.jetbrains.com" 然后点击获取注册码 ...