如何将GCI DirectoryName转换为.Substring()的字符串

时间:2017-04-28 10:05:18

标签: string powershell type-conversion get-childitem

尝试从此输出直接父文件夹,因为完整路径太大。最终目标是从修改日期订购的不同文件夹中输出重复文件。

我认为我需要将gci DirectoryName输出转换为字符串,以便我可以.Substring($LenRootPath)按照以下方式进行:

我已尝试-Expand,但无法将System.Object转换为System.String。我也尝试了[string[]],这被忽略了 已尝试.Substring($rootPath.Length),但仍获得System.Object

gci directoryname投射为字符串?

$rootPath = "c:\test" 
$array = @(Join-Path $rootPath "\1111\", 
           Join-Path $rootPath "\2222\", 
           Join-Path $rootPath "\3333\")

Get-ChildItem -Path $array -Filter "*.doc" -Recurse |
  where {!$_.PSIsContainer} | 
  Select-Object DirectoryName, Name, LastWriteTime | 
  Sort-Object Name, LastWriteTime -Desc |
  Format-Table @{
    Name="LastWriteTime";
    Expression={$_.LastWriteTime.ToString("yyyy-MM-dd HH:mm")}
  }, DirectoryName -GroupBy Name

1 个答案:

答案 0 :(得分:3)

您的代码存在问题在$array的定义中。您需要在每个周围添加括号,以便cmdlet在被解释为数组中的字符串之前执行。 E.g:

$array = @((join-path $rootPath "\1111\"), 
           (join-path $rootPath "\2222\"), 
           (join-path $rootPath "\3333\"))