如何让 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
}
在您的情况下,您使用的是 dir
(Get-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) }
}
再次感谢查理,帮了大忙!
我正在尝试将一些 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
}
在您的情况下,您使用的是 dir
(Get-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) }
}
再次感谢查理,帮了大忙!