2014-06-12 55 views
1

我有太長的目錄(達到260個字符限制),所以我試圖將路徑映射到字母驅動器(T :)。Powershell使用映射驅動器作爲根路徑

我找到太長的路徑名的方式是通過在文件共享的根目錄下返回搜索錯誤記錄的.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

我們假設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>\ 

有意義嗎?

+0

種。用這種方法,你必須手工找出字符長度有限的路徑,然後將其放入? –

相關問題