不是脚本开发者,我不是程序编写者,我只是个搬运工。感谢强大powershell module,感谢伟大的codeplex.com,一步小心让我又找到了一个powershell module。利用这个module,我可以使用PowerShell做文件服务器的迁移哦。
首先,当然得附上module的链接:https://ntfssecurity.codeplex.com/
先介绍,文件服务器迁移的话,常用的是两种工具,如下:
使用ADMT进行跨林的迁移,前提还得是建立林的信任关系哦。那么,如果使用powershell来迁移,则是不需要建立信任关系哦。还真的有客户有这样的BT需求啊。
那么先来说说实现思路吧。
1) 使用powershell获取A域账号与之对应的SID号,因为文件服务器从A域退域再加域到B域之后,上面的授权用户变成了一堆SID号
2) 客户提供A域用户账号与B域用户账号的对应列表
3) 结合1和2的列表,梳理A域的SID与B域账号对应列表
4) 然后通过powershell命令从这个列表import相关信息
5)还可以清理掉残留的旧的SID
1.获取旧域的用户和SID清单
<span style="font-size:14px;"><Get-ADUser -Filter * -SearchBase "OU=test,DC=contoso,DC=net" | select Name,SID | Export-Csv c:\2222\sidold.csv</span></span>
<span style="font-size:14px;"><Get-ADUser -Filter * -SearchBase "OU=test,DC=contoso,DC=net" | select Name,SID | Export-Csv c:\2222\sidold.csv</span></span>
2.文件服务器退旧域,加新域
退域之后,用户变成了SID了,但是权限还是在的
3.使用命令获取权限
此时需要借助强大NTFS module来实现功能咯。
安装NTFS module,将下载到的module解压到以下路径:
C:\Windows\System32\WindowsPowerShell\v1.0\Modules
然后运行Import-Module NTFSSecurity即可。
Get-Item C:\IT | Get-NTFSAccess | select Account,AccessRights | Export-Csv AccessRights.csv
其中
AccessRights.csv的内容如下:
为了更好看清楚之间的联系,可以在csv文档再添加一列, 但是这一列oldSID在下面的脚本是用不上的。
4.添加权限
import-csv access.csv | foreach {Add-NTFSAccess -Path $_.path -Account $_.Account -AccessRights $_.AccessRights}
最后的结果是,新域账号加进来了,但是旧的SID号还在
如果需要清理的话,又得运行另一个命令。
import-csv access.csv | foreach {get-NTFSAccess -Path $_.path -Account $_.oldSIID -ExcludeInherited | Remove-NTFSAccess}