Get-FolderItem version 获取所有文件夹
Get-FolderItem version to get all folders
我找到了一个 cmdlet,它 return 可以处理所有文件而不考虑路径大小。我想知道是否有一个等效的命令可以获取所有文件夹而不考虑路径大小?
Get-FolderItem
将 robocopy 和 powershell 组合到 return 所有文件,即使是路径大于 260 的文件。
有没有办法获取文件共享中的所有文件夹
Get-FolderItem
使用 robocopy
开关 /NDL
从日志输出中排除目录,它用来获取文件信息。它还通过使用 /S
开关递归而不是 /E
来避免空文件夹
只需将 $params
变量从:
$params.AddRange(@("/L","/S","/NJH","/BYTES","/FP","/NC","/NDL","/TS","/XJ","/R:0","/W:0"))
到
$params.AddRange(@("/L","/E","/NJH","/BYTES","/FP","/NC","/NFL","/TS","/XJ","/R:0","/W:0"))
现在,Robocopy 将列出目录,而不是文件。由于目录的输出与文件略有不同,因此您还必须稍微更改解析逻辑。
改变
If ($_.Trim() -match "^(?<Size>\d+)\s(?<Date>\S+\s\S+)\s+(?<FullName>.*)") {
$object = New-Object PSObject -Property @{
ParentFolder = $matches.fullname -replace '(.*\).*',''
FullName = $matches.FullName
Name = $matches.fullname -replace '.*\(.*)',''
Length = [int64]$matches.Size
LastWriteTime = [datetime]$matches.Date
Extension = $matches.fullname -replace '.*\.(.*)',''
FullPathLength = [int] $matches.FullName.Length
}
$object.pstypenames.insert(0,'System.IO.RobocopyDirectoryInfo')
Write-Output $object
}
至
If ($_.Trim() -match "^(?<Children>\d+)\s+(?<FullName>.*)") {
$object = New-Object PSObject -Property @{
ParentFolder = $matches.fullname -replace '(.*\).*',''
FullName = $matches.FullName
Name = $matches.fullname -replace '.*\(.*)',''
}
$object.pstypenames.insert(0,'System.IO.RobocopyDirectoryInfo')
Write-Output $object
}
应该就可以了
我找到了一个 cmdlet,它 return 可以处理所有文件而不考虑路径大小。我想知道是否有一个等效的命令可以获取所有文件夹而不考虑路径大小?
Get-FolderItem
将 robocopy 和 powershell 组合到 return 所有文件,即使是路径大于 260 的文件。
有没有办法获取文件共享中的所有文件夹
Get-FolderItem
使用 robocopy
开关 /NDL
从日志输出中排除目录,它用来获取文件信息。它还通过使用 /S
开关递归而不是 /E
只需将 $params
变量从:
$params.AddRange(@("/L","/S","/NJH","/BYTES","/FP","/NC","/NDL","/TS","/XJ","/R:0","/W:0"))
到
$params.AddRange(@("/L","/E","/NJH","/BYTES","/FP","/NC","/NFL","/TS","/XJ","/R:0","/W:0"))
现在,Robocopy 将列出目录,而不是文件。由于目录的输出与文件略有不同,因此您还必须稍微更改解析逻辑。
改变
If ($_.Trim() -match "^(?<Size>\d+)\s(?<Date>\S+\s\S+)\s+(?<FullName>.*)") {
$object = New-Object PSObject -Property @{
ParentFolder = $matches.fullname -replace '(.*\).*',''
FullName = $matches.FullName
Name = $matches.fullname -replace '.*\(.*)',''
Length = [int64]$matches.Size
LastWriteTime = [datetime]$matches.Date
Extension = $matches.fullname -replace '.*\.(.*)',''
FullPathLength = [int] $matches.FullName.Length
}
$object.pstypenames.insert(0,'System.IO.RobocopyDirectoryInfo')
Write-Output $object
}
至
If ($_.Trim() -match "^(?<Children>\d+)\s+(?<FullName>.*)") {
$object = New-Object PSObject -Property @{
ParentFolder = $matches.fullname -replace '(.*\).*',''
FullName = $matches.FullName
Name = $matches.fullname -replace '.*\(.*)',''
}
$object.pstypenames.insert(0,'System.IO.RobocopyDirectoryInfo')
Write-Output $object
}
应该就可以了