如何让 powershell 使用 else 语句搜索另一个文件夹

How to have powershell use a else statement to search another folder

我正在尝试将一些 PST 文件自动导入 Outlook,我目前正在使用以下脚本

Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null 
$outlook = new-object -comobject outlook.application 
$namespace = $outlook.GetNameSpace("MAPI") 
dir “$env:USERPROFILE\appdata\local\microsoft\outlook\.pst” | % { 
$namespace.AddStore($_.FullName) }

我想添加一个 else 语句,这样如果在第一个位置找不到 pst 文件,它将检查“$env:USERPROFILE\Documents\Outlook Files”

对于单个文件,使用Test-Path验证文件是否在您期望的位置,例如:

$pathA = "C:\path\to\my\file"
$pathB = "C:\path\to\another\file"

if(Test-Path $pathA){
  # do something with $pathA
}
else {
  # do something with $pathB
}

在您的情况下,您使用的是 dirGet-ChildItem 的别名),其中 returns 文件夹中与指定的 path/name 匹配的所有文件。您可能想要做的是首先在 PathA 中查找文件,如果没有找到,则在 PathB 中查找:

$pathA = "C:\path\to\my\folder\*.pst"
$pathB = "C:\path\to\another\folder\*.pst"

$files = Get-ChildItem $pathA

if($files){
  # do something with $pathA
}
else {
  # do something with $pathB
}

对于任何好奇的人来说,这里是我的新最终剧本

    $pathA = “$env:USERPROFILE\AppData\Local\Microsoft\*.pst”
    $pathB = “$env:USERPROFILE\Documents\Outlook Files\*.pst”

    $files = Get-ChildItem $pathA

    Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null 
    $outlook = new-object -comobject outlook.application 
    $namespace = $outlook.GetNameSpace("MAPI") 

    if($files){
    dir “$env:USERPROFILE\AppData\Local\Microsoft\*.pst” | % {                                 
    $namespace.AddStore($_.FullName) }
    }
    else {
    dir “$env:USERPROFILE\Documents\Outlook Files\*.pst” | % {                         
    $namespace.AddStore($_.FullName) }
    }

再次感谢查理,帮了大忙!