PowerShell 之 NTFS

不是脚本开发者,我不是程序编写者,我只是个搬运工大笑。感谢强大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>

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}





摘要:NTFS是Microsoft公司开发的一种有着良好安全性和稳定性的高性能文件系统,NTFS的文件或文件夹中附加多个额外的数据流,但是其访问一直没有很好的解决办法,本文使用VB2003实现NTFS文件附加数据流的读写类,提供.Net框架下NTFS文件附加数据流的完整解决方案。 关键词:VB.Net NTFS 数据流 类 在项目中选择添加引用->浏览->选择“JWBStreamOP.dll”文件->确定,即可成功引用。 4.1 类的声明: Dim myStreamOP As New ClassJWBStreamOP(“NTFS文件完整路径”) 4.2 属性: 该类共有3个只读属性 属性名 返回值类型 备注 FileName String 只读,在成功声明后使用 Ready Boolean 只读,该类可操作时为True Ver String 只读,类版本、版权信息 4.3 方法 该类共有6个方法: 4.3.1 OpenNTFSStream(ByVal sStreamName As String) As System.IO.FileStream 打开指定文件(声明时指定)的指定数据流,返回值为指定数据流的FileStream接口。 参数列表 类型 传递方式 参数说明 sStreamName String Byval 流文件名 4.3.2 GetNTFSStreamSize(ByVal sStreamName As String) As Long 获取指定数据流的大小,返回实际大小,执行失败返回-1 参数列表 类型 传递方式 参数说明 sStreamName String Byval 流文件名 4.3.3 AddNTFSStream(ByVal toHidName As String, ByRef percentDone As Double) As Boolean 添加附加数据流,返回执行结果。 参数列表 类型 传递方式 参数说明 toHidName String ByVal 待添加的文件路径 percentDone Double ByRef 传递一个完成百分比的参数 4.3.4 SaveNTFSStream(ByVal sStreamName As String, ByVal outFileName As String, ByRef percentDone As Double) As Boolean将指定的数据流保存为文件,返回执行结果。 参数列表 类型 传递方式 参数说明 sStreamName String ByVal 流文件名 outFileName String ByVal 保存文件路径 percentDone Double ByRef 传递一个完成百分比的参数 4.3.5 ReadNTFSStreamsName() As String() 获取文件的所有附加数据流名称,返回名称数组。 4.3.6 DeleteNTFSStream(ByVal sStreamName As String) As Boolean 删除指定数据流,返回执行结果。 参数列表 类型 传递方式 参数说明 sStreamName String Byval 流文件名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值