Просто обработайте исключение, используйте попытку ... кроме блока вокруг кода, который, как вы знаете, может завершиться неудачей.
def periodic_task():
log.msg("periodic task running")
try:
x = 10 / 0
except Exception as error:
# Here you should at least log the error, exceptions do not should pass silently.
pass
ls | %{C:\Working\tools\custom-tool.exe $_}
Поскольку каждый объект снижается конвейер, инструмент будет выполнен против него. Помещение кавычек вокруг командной строки заставляет это быть... жалом! Локальная переменная "$ _" это затем, вероятно, не знает, что сделать с так рвотами с ошибкой.
При тихой необходимости в кавычках вокруг пути команды (скажите, если у Вас есть пробелы), просто сделайте это как это:
ls | % { &"C:\Working\tools\custom-tool.exe" $_.FullName }
Заметьте, что использование и перед строкой вынуждает PowerShell интерпретировать его как команду и не строку.
Я держу пари, что Вашему инструменту нужен полный путь. $ _ является каждым объектом файла, который проникает через конвейер. Вероятно, необходимо использовать выражение как это:
ls | %{C:\Working\tools\custom-tool.exe $_.fullname}
И Jeffrery Hicks и slipsec корректны. Янки двойные кавычки прочь.
$ _ или $ _ .fullname работали в моем сценарии тестирования (ниже). YMMV с Вашим инструментом пользователя.
gci | % { c:\windows\notepad.exe $_.fullname }
или
gci | % { c:\windows\notepad.exe $_ }