尝试从此输出直接父文件夹,因为完整路径太大。最终目标是从修改日期订购的不同文件夹中输出重复文件。
我认为我需要将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
答案 0 :(得分:3)
您的代码存在问题在$array
的定义中。您需要在每个周围添加括号,以便cmdlet在被解释为数组中的字符串之前执行。 E.g:
$array = @((join-path $rootPath "\1111\"),
(join-path $rootPath "\2222\"),
(join-path $rootPath "\3333\"))