仅限 PowerShell Get-Childitem 顶级文件夹
PowerShell Get-Childitem top level folder only
我正在尝试获取有关一组文件夹的信息(Size
、LastWriteTime
)。我只需要知道顶级文件夹,即 c:\Logs、C:\Storage、D:\backup,我不想知道这些文件夹里面有什么信息。
我写了一个脚本,几乎可以满足我的要求,但问题是,脚本遍历了这些文件夹的内容,而不是只查看父文件夹(d:\backup 等...)
$path = Import-Csv C:\Users\pshell\Desktop\paths.csv
Foreach ($paths in $path) {
get-childitem $paths.path | where {$_.PSIsContainer} |
select-object FullName, Name, Creationtime, @{Name="MB";Expression={$_.Length / 1MB}},
LastAccessTime, @{Name="Owner";Expression={(Get-ACL $_.Fullname).Owner}}
}
它为我提供了我需要的信息,但更深入的信息是我现阶段不希望获得的。
我不明白的是为什么 Get-Childitem
不只查看顶级文件夹?我的意思是我没有使用 -Recurse
开关,所以它应该只扫描顶层。
Get-ChildItem
获取给定路径的子项(例如内容)。这就是为什么它看起来像递归的原因,因为它向您显示了这些路径中的所有文件夹,而不是这些文件夹的内容(这需要 -Recurse
)。
如果您只想检索有关路径的信息,您可能应该使用 Get-Item
,但请注意,如果不遍历其内容,您将无法检索 Windows 路径的大小。
这将是获取每个路径大小的一种方法(我假设您想要的是包括子文件夹在内的路径的总大小,如果不删除 -recurse
以获取该特定文件夹中的文件):
$path = @(@{path = 'C:\temp'},@{path = 'c:\users'})
Foreach ($paths in $path)
{
$Size = (Get-ChildItem $paths.path -File -Recurse | Measure-Object Length -Sum).Sum
Get-Item -Path $paths.path | select-object FullName, Name, Creationtime, @{Name="MB";Expression={$Size / 1MB}}, LastAccessTime, @{Name="Owner";Expression={(Get-ACL $_.Fullname).Owner}}
}
我正在尝试获取有关一组文件夹的信息(Size
、LastWriteTime
)。我只需要知道顶级文件夹,即 c:\Logs、C:\Storage、D:\backup,我不想知道这些文件夹里面有什么信息。
我写了一个脚本,几乎可以满足我的要求,但问题是,脚本遍历了这些文件夹的内容,而不是只查看父文件夹(d:\backup 等...)
$path = Import-Csv C:\Users\pshell\Desktop\paths.csv
Foreach ($paths in $path) {
get-childitem $paths.path | where {$_.PSIsContainer} |
select-object FullName, Name, Creationtime, @{Name="MB";Expression={$_.Length / 1MB}},
LastAccessTime, @{Name="Owner";Expression={(Get-ACL $_.Fullname).Owner}}
}
它为我提供了我需要的信息,但更深入的信息是我现阶段不希望获得的。
我不明白的是为什么 Get-Childitem
不只查看顶级文件夹?我的意思是我没有使用 -Recurse
开关,所以它应该只扫描顶层。
Get-ChildItem
获取给定路径的子项(例如内容)。这就是为什么它看起来像递归的原因,因为它向您显示了这些路径中的所有文件夹,而不是这些文件夹的内容(这需要 -Recurse
)。
如果您只想检索有关路径的信息,您可能应该使用 Get-Item
,但请注意,如果不遍历其内容,您将无法检索 Windows 路径的大小。
这将是获取每个路径大小的一种方法(我假设您想要的是包括子文件夹在内的路径的总大小,如果不删除 -recurse
以获取该特定文件夹中的文件):
$path = @(@{path = 'C:\temp'},@{path = 'c:\users'})
Foreach ($paths in $path)
{
$Size = (Get-ChildItem $paths.path -File -Recurse | Measure-Object Length -Sum).Sum
Get-Item -Path $paths.path | select-object FullName, Name, Creationtime, @{Name="MB";Expression={$Size / 1MB}}, LastAccessTime, @{Name="Owner";Expression={(Get-ACL $_.Fullname).Owner}}
}