我的目录太长(达到260个字符的限制),所以我试图将路径映射到字母驱动器(T :)。
我找到路径名太长的方法是在文件共享的根目录上返回搜索错误记录的.TargetName。所以长路径名是$ errorRecord。
这是我目前的代码:
foreach ($record in $errorRecord)
{
New-PSDrive -Name "T" -PSProvider FileSystem -Root ($record.CategoryInfo).TargetName -Persist
$path = "T:\"
$ACLs = get-acl -path $path -recurse |
ForEach-Object { $_.Access } |
Where {$_.IdentityReference -notlike "*BUILTIN*" -and $_.IdentityReference -notlike "*NT AUTHORITY*"}
Foreach ($ACL in $ACLs)
{
$OutInfo = $Folder.Fullname + "," + $ACL.IdentityReference
Add-Content -Value $OutInfo -Path "C:\Permissions2.csv"
}
Remove-PSDrive T
}
这样获取文件路径,将其设置为T:\然后(应该)从T:\驱动器下面的递归文件夹中获取信息。
输出的是T:\驱动器的完整路径名及其权限信息,但不低于该点 - 可能是因为字符限制。
如何将输出更改为仅字母“T:\”驱动器,以便更深入地挖掘? 谢谢你的帮助。
答案 0 :(得分:0)
假设C上的长路径是300个字符。像这样使用subst来创建一个新根:
PS C:\> subst t: c:\foo\bar\<250 chars>\ # new win32 logical drive
PS C:\> new-psdrive temp filesystem -root t:\ # new powershell drive
PS C:\> cd temp:
PS temp:\> cd blah\blurgh\<remaining path>\
有意义吗?