Powershell прекратить выполнение - PullRequest
0 голосов
/ 04 февраля 2020

Я использую PowerShell для обработки CSV-файлов в каталоге, когда не найдено ни одного файла с отметкой текущей даты. Я хочу, чтобы процесс выдал сообщение об ошибке, не найденный файл, и завершил работу.

# Powershell raise error and exit
# File name: sale_2020_02_03.csv

$getLatestCSVFile = Get-ChildItem -Path $Folder -Filter "*.csv" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
if ($getLatestCSVFile)
{
    try
    {
        # Process .csv file
    }
    catch
    {
        # on error
        $ErrorMessage = $_.Exception.Message
        throw "$ErrorMessage"
    }
}
else
{
    # If current date file not found raise error and exit
    Send-MailMessage
    throw "File not found"
}

1 Ответ

0 голосов
/ 05 февраля 2020

Что касается этого ...

Я бы хотел, чтобы скрипт powershell остановил выполнение

... для этого используется ключевое слово Exit или опция '-ErrorAction Stop' предназначена для.

Что касается этого ...

если код попадает в блок else в блоке else, я хочу уведомить, что файл не найден

... согласно моему выше, то же самое, и вы должны установить это.

Имеется в виду что-то вроде ...

Clear-Host
$Error.Clear()
try
{
    # Statement to try
    New-Item -Path 'D:\Temp\DoesNOtExist' -Name 'Test.txt' -ItemType File -ErrorAction Stop
}
catch 
{
    # What to do with terminating errors
    Write-Warning -Message $Error[0]
}

# Results
<#
WARNING: Could not find a part of the path 'D:\Temp\DoesNOtExist\Test.txt'.
#>

Или используя несколько операторов catch, например ...

Пример: принудительное предупреждение файла

Clear-Host
$Error.Clear()
try
{
    # Results in NoSupportException
    # Statement to try
    New-Item -Path 'D:\Temp\Temp' -Name my:Test.txt -ItemType File -ErrorAction Stop

    # Results in DirectoryNotFoundException
    # New-Item -Path 'D:\Temp\Temp' -Name 'Test.txt' -ItemType File -ErrorAction Stop
}
catch [System.NotSupportedException]
{
    # What to do with terminating errors
    Write-Warning -Message 'Illegal chracter or filename.'
}
catch [System.IO.DirectoryNotFoundException]
{
    # What to do with terminating errors
    Write-Warning -Message 'The path is not valid.'
}
catch 
{
    # What to do with terminating errors
    Write-Warning -Message 'An unexpected error occurred.'
}

# Results
<#
WARNING: Illegal character or filename.
#>

Пример: принудительное предупреждение пути

Clear-Host
$Error.Clear()
try
{
    # Results in NoSupportException
    # Statement to try
    # New-Item -Path 'D:\Temp\Temp' -Name my:Test.txt -ItemType File -ErrorAction Stop

    # Results in DirectoryNotFoundException
    New-Item -Path 'D:\Temp\Temp' -Name 'Test.txt' -ItemType File -ErrorAction Stop
}
catch [System.NotSupportedException]
{
    # What to do with terminating errors
    Write-Warning -Message 'Illegal chracter or filename.'
}
catch [System.IO.DirectoryNotFoundException]
{
    # What to do with terminating errors
    Write-Warning -Message 'The path is not valid.'
}
catch 
{
    # What to do with terminating errors
    Write-Warning -Message 'An unexpected error occurred.'
}

# Results
<#
WARNING: The path is not valid.
#>

См. также это обсуждение, которое является аналогичный вариант использования. Обратите особое внимание на ответ «Выход против возврата против перерыва».

Завершение работы скрипта в PowerShell

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