如何确定变量是否返回可比较的语句

时间:2017-06-22 13:16:16

标签: powershell

if ((Get-ChildItem "I:\temp").Length -ne 0) {
    $locations = (Get-Item "I:\temp"), (Get-ChildItem "I:\temp" -Directory -Recurse) | % {
        Get-ChildItem -File $_.FullName |
            Select-String -List -Pattern '^\d{3}-?\d{2}-?\d{4}$' | 
            % Path
    }

    if ($locations) {
        $locations | Out-File "I:\temp\SSN_FILES.txt"
    } else {
        Get-ChildItem "I:\temp" -Exclude "fullpath.txt", "SSN_FILES.txt" | Remove-Item
    }
}

我需要确定$locations是否为真。如果是,则执行第一个操作,如果为false,则执行第二个操作。我遇到的问题是我无法找到确定$locations是否为真的方法(等于匹配的正则表达式)。

1 个答案:

答案 0 :(得分:2)

如果变量存在,if返回true之前面临此问题,并且设置为非假值(不一定为true,而是某个值)。

这样做:

if($locations -eq $true){ # to check it is set to the boolean true
if($locations -ne $null){ # to check if it contains a value