2016-11-30 6 views
1

Мне нужно иметь шаг в SQL Job, чтобы проверить, есть ли файл на каком-то пути, поэтому, если есть файл, то остановитесь с дальнейшим исполнением. Что-то вроде:CMDExec if exists then stop

$file = "\\networklocation\file.bak" 
if (-exists (Test-Path $file)) 
{ 
    throw "$file not found." 
} 

ответ

3

Просто опустите переключатель -exists и убедитесь, что $ErrorActionPreference установлен в stop:

$ErrorActionPreference = 'stop' 
$file = "\\networklocation\file.bak" 
if (Test-Path $file) 
{ 
    throw "$file found." 
} 
+0

Er ... Я думаю, он хочет остановиться, если файл существует. –

+0

@WalterMitty Вы правы. Изменит мой ответ - просто интересно, почему он выдает исключение, если файл не существует (это фактическое состояние, которое он ожидает) ... –

+1

Ну, чтобы объяснить это. Существует какое-то задание резервного копирования/восстановления, которое работает над механизмом: 1. взять резервную копию из prod 2. восстановить его в офисной зоне 3. удалить файл резервной копии, который можно сделать снова по запросу пользователя. Не мои логические ребята –

0

Test-Path возврата Командлет Boolean, и вы почти там:

$file = "\\networklocation\file.bak" 
if (Test-Path $file) 
{ 
    throw "$file not found." 
}