使用PowerShell 自动创建DFS复制组
运行环境:Windows Server 2012 R2
需要注意的是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复制组的更多相关文章
- 使用PowerShell 自动创建DFS命名空间服务器
运行环境:Windows Server 2012 R2 DFS命名空间概述 DFS命名空间 PowerShell脚本命令 Writing PowerShell DFS Scripts: Managin ...
- sql自动创建表并复制数据
---------------自动创建表并复制数据sql,需要自己设置主键----------- select * into 新表 from 旧表
- 使用MyBatis Generator自动创建代码
SSM框架--使用MyBatis Generator自动创建代码 1. 目录说明 使用自动生成有很多方式,可以在eclipse中安装插件,但是以下将要介绍的这种方式我认为很轻松,最简单,不需要装插件, ...
- sql2008 计划自动创建数据库分区【转】
本文转自:http://jingyan.baidu.com/article/6b97984d9a26ec1ca3b0bf77.html sql2008 计划自动创建数据库分区 固定增量的数据,自动创建 ...
- 1.5 外部销售自动创建为内部PR
1.5 外部销售自动创建为内部PR 1.5.1 业务方案描述 外部销售订单登记后,在销售订单录入界面点击一个创建内部申请按钮,自动将外部销售订单创建为内部申请,创建后将不得再次创 ...
- Do You Kown Asp.Net Core - 根据实体类自动创建Razor Page CURD页面模板
Scaffolding Template Intro 我们知道在Asp.Net MVC中,如果你使用的EF的DBContext的话,你可以在vs中通过右键解决方案-添加控制器-添加包含视图的控制器,然 ...
- 如何用SQL脚本在SQL Server Replication中创建合并复制,以及怎么创建分区合并复制
假设我们要创建合并复制的发布端数据库是EFDemo其中有四张表,订阅端数据库是EFDemoSubscription,如下图所示: 首先创建发布端快照代理Sql agent job:"EFDe ...
- OpenCV(C++版)图像读取,创建,复制,保存,显示
http://blog.163.com/yuyang_tech/blog/static/21605008320132642254689/ 一个小例子: #include "stdafx.h& ...
- SpringBoot+Mybatis 自动创建数据表(适用mysql)
Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...
随机推荐
- Python之hmac模块的使用
hmac模块的作用: 用于验证信息的完整性. 1.hmac消息签名(默认使用MD5加算法) #!/usr/bin/env python # -*- coding: utf-8 -*- import h ...
- maven项目创7 配置分页插件
页面编写顺序 首先确定是否拥有想要的pojo(对象实体类)———>dao层mybatis配置——>service层的接口及实现类——>controller(web下) 分页插件作 ...
- 灰度图像--频域滤波 傅里叶变换之连续信号傅里叶变换(FT)
学习DIP第20天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...
- Java当中的基本类型包装类
Java当中的基本类型包装类 01 基本数据类型对象的包装类 **什么是基本数据类型对象包装类呢?**就是把基本数据类型封装成对象,这样就可以提供更多的操作基本数值的功能了. 基本数据类型对象的包装类 ...
- Multi-judge Solving
C. Multi-judge Solving 写这个题的时候也是思维出了漏洞....容易漏掉的一点就是在别的 oj 上做了题之后可能不能够马上回原来的 oj 上做题,这是写循环的时候需要注意的的方,需 ...
- js获取用户当前页面复制的内容并修改
如果只是单纯的获取页面上复制的内容可以使用window.getSelection()来获取选中的内容,在执行复制操作就可以了,但是如果想修改复制的内容可以先获取要复制的内容修改之后再用document ...
- Java基础__Integer类型中的自动装箱
Integer类型的自动装箱:就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱. ...
- lamp 环境利用compser安装tp5
1.安装compser,这个可以去百度命令 2.cd到根目录 3.composer create-project --prefer-dist topthink/think tp(tp可以随意命名) 4 ...
- WARNING: inbound connection timed out (ORA-3136)
WARNING: inbound connection timed out (ORA-3136) WARNING: inbound connection timed out (ORA-3136) Ta ...
- java源码-HashMap类设计
map(内部interface Entry<K,V>)->abstractMap(定义视图 entrySet抽象方法)->hashMap(静态内部类Node(继承Entry&l ...