我在PowerShell中创建一个脚本,该脚本应该找到用户的UPM文件夹并将.old附加到它(以方便配置文件重建)。
下面的代码段是我的代码:
# Rename the UPM profile
Exit-PSSession
cd '\\SYLX-FS-01\D$\UPMProfiles'
$UPMPath = "$target.upm"
$UPMOld = "$target.upm.old"
if (Test-Path $UPMPath -IsValid) {
if (Test-Path $UPMOld -IsValid) {
Remove-Item $UPMOld
Rename-Item $UPMPath -NewName $UPMOld
Write-Host "Renamed UPMProfile"
} else {
Rename-Item $UPMPath -NewName $UPMOld
Write-Host "Renamed UPMProfile"
}
} else {
# Write-Host "UPM Profile not found, no action has been taken on the file server."
$UPM = "False"
}
每次运行时都会返回一个无法找到文件的错误。
Remove-Item : Cannot find path '\\SYLX-FS-01\D$\UPMProfiles\bill.odwyer.upm.old' because it does not exist. At line:8 char:20 + Remove-Item <<<< $UPMOld + CategoryInfo : ObjectNotFound: (\\SYLX-FS-01...er.upm.old:String) [Remove-Item], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand
据我所知,如果$UPMPath
存在,它应该只到第8行,如果不存在,那么它应该只跳到else
。我错过了什么?
答案 0 :(得分:4)
如果你放弃旗帜&#34; -IsValid&#34;它应该工作。
如果路径本身是有效(合法)路径,则IsValid返回true。它不会检查文件/文件夹是否存在。
如果删除-IsValid,则测试路径检查,如果路径存在则返回true / false。
详细了解:https://technet.microsoft.com/en-us/library/hh849776.aspx
答案 1 :(得分:3)
Test-Path -IsValid
检查路径规范是否有效,而不是路径实际存在。删除参数-IsValid
以验证是否存在路径。
<强> -IsValid 强>
确定路径的语法是否正确,无论路径的元素是否存在。如果路径语法有效,则此参数返回TRUE;如果不是,则返回FALSE。