将"全名"属性中的路径提取到结果中



我有这个脚本:

Get-ChildItem -Path R:MyFolderarchive -Recurse |
>>  Sort-Object -Property LastAccessTime |
>>  Select-object -Property Name, FullName

我想要没有文件名的路径,而不是全名,所以我尝试按如下方式进行调整:

Get-ChildItem -Path R:MyFolderarchive -Recurse |
>>  Sort-Object -Property LastAccessTime |
>>  Select-object -Property Name, [System.IO.Path]::GetDirectoryName(fullname)

我显然对PS很陌生 - 清楚我正在尝试做什么和失败吗?

通常,Get-ChildItemcmdlet 返回不同类型的对象:

  • System.IO.FileInfo
  • System.IO.DirectoryInfo

不幸的是,在后者上,您找不到名为DirectoryName.可以使用Get-ChildItem -File(-File参数消除此类对象(,也可以按如下方式使用计算属性:

$rootPath = 'R:MyFolderarchive'
Get-ChildItem -Path $rootPath -Recurse |
Sort-Object -Property LastAccessTime |
Select-Object -Property Name,
@{ Name       = 'DirectoryName';
Expression = { $_.FullName | Split-Path }}

有关说明,请阅读选择对象 => 参数:

-财产

指定要选择的属性。这些属性添加为 注意输出对象的属性成员。允许使用通配符。

属性参数的值可以是新计算的值 财产若要创建计算属性,请使用哈希表

有效密钥为:

  • 名称(或标签(:
  • 表达或

怎么样:

Get-ChildItem -Path 'R:MyFolderarchive' -Recurse | Sort-Object -Property LastAccessTime | Select-object -Property Name, DirectoryName

最新更新