test-path, проверьте, существует ли файл - PullRequest
0 голосов
/ 07 августа 2020

Мне нужна помощь. Мне нужен сценарий PowerShell со следующими действиями.

  1. Сценарий запускается и сначала проверяет, доступен ли файл 1. Если это доступно, go к шагу 2. Если файл 1 недоступен, сценарий должен завершиться.
  2. Сценарий проверяет, существует ли файл 2. Если доступен файл 2, сценарий должен завершиться; если файл 2 недоступен, go переходите к шагу 3.
  3. Сценарий проверяет, запущена ли программа X. Если ДА, следует выйти из программы и скопировать файл 3 в папку. Если программа X не запущена, она должна немедленно скопировать файл 3.

Очень важно! Если на шаге 2 файл 2 существует, сценарий должен завершиться.

Это то, что у меня есть, но даже если файл 2 присутствует, он копирует файлы.

$Path = "\\xyz\trigger1.txt"
$Path2 = "$env:userprofile\xyz\trigger2.txt"

if ((Test-Path $Path) -and !(Test-Path $Path2)) {
 
    "trigger1.txt exist"
    "trigger2.txt not exist"

    if((get-process "XXX" -ea SilentlyContinue) -eq $Null)
    { 
        "not Running"
        copy-item "\\xyz\xyz\*" "$env:userprofile\def\" -recurse -ErrorAction SilentlyContinue
        start-sleep -s 5
        Start-Process -filepath "C:\Program Files (x86)\mno\XXX.exe" 
    }
    else
    {
        "running"
        stop-process -name "XXX" -force
        start-sleep -s 5
        copy-item "\\xyz\xyz\*" "$env:userprofile\def\" -recurse -ErrorAction SilentlyContinue
        start-sleep -s 5
        Start-Process -filepath "C:\Program Files (x86)\mno\XXX.exe" 
    }
}
else
{
"trigger1.txt not exist"
start-sleep -s 5
}

1 Ответ

0 голосов
/ 07 августа 2020
  • Убедитесь, что вы запускаете сценарий под правильным пользователем.
  • Убедитесь, что вы используете -PathType Leaf в Test-Path, если вы ищете только файлы.
  • Убедитесь, что логические операторы работают с круглыми скобками, чтобы избежать ошибок.

if ((Test-Path $ Path -PathType Leaf) -and (-not (Test-Path $ Path2 - PathType Leaf))) {

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...