2

根据这个网站,每个文件夹都应该是一个容器,因此应该满足以下条件:

if (Test-Path $item -PathType Container) 
{
    "TRUE: " + $item.Name
} 
else 
{ 
    "FALSE: " + $item.Name
}

但对我来说这不是真的,有些文件夹是真的,有些是假的。这是我的整个脚本:

function GetFiles($path = $pwd) 
{ 
    foreach ($item in Get-ChildItem $path)
    {
        $item;
        if (Test-Path $item -PathType Container) 
        {
            "TRUE: " + $item.Name
            GetFiles $item.FullName
        } 
        else 
        { 
            "FALSE: " + $item.Name
        }
    } 
}

为什么函数有时会返回 false?

更新:例如,这是我希望它是真的情况:

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         9/10/2013   1:51 PM            Assets
FALSE: Assets
4

2 回答 2

1

$item.FullName是必须的 ;)

function GetFiles($path = $pwd) 
{ 
    foreach ($item in Get-ChildItem $path)
    {
        if (Test-Path -LiteralPath $item.FullName -PathType Container)
        {
            "TRUE: " + $item.Name
            GetFiles $item.FullName
        } 
        else 
        { 
            "FALSE: " + $item.Name
        }
    } 
}
于 2013-09-17T21:08:53.660 回答
1

您使用的是哪个版本的 PowerShell?

使用 PowerShell V3,您可以尝试:

Get-ChildItem $path -Directory

使用 PowerShell V2 我仍然使用

Get-ChildItem | where {$_.psIscontainer -eq $true}

在你的情况下

if ($item.psIscontainer -eq $true) 
{
    "TRUE: " + $item.Name
} 
else 
{ 
    "FALSE: " + $item.Name
}
于 2013-09-11T03:58:15.017 回答