Вывести в лог-файл номер строки

Я пытаюсь справиться с какой-то нестандартной ошибкой в ​​моих функциях (например, неправильный ввод текста), и я хочу отследить эти ошибки, написав своего рода журнал в переменной. Я пытаюсь написать также номер строки, и это мой код

$someVar = "line $($MyInvocation.ScriptLineNumber): at least 2 arguments needed, function has been called with only $args.Count arguments"

Иногда он возвращает правильное число, а иногда нет. Это правильный путь? Есть ли другой метод?

РЕДАКТИРОВАТЬ: Я обнаружил, что эта проблема может быть связана с нетрадиционным способом выполнения сценариев, которые я использую, чтобы обойти проблему с разрешениями на конкретной машине. Я опубликую более подробный пример, как только смогу

2 ответа

Попробуйте обернуть в $(). Например:

$someVar = "line $($MyInvocation.ScriptLineNumber): at least 2 arguments needed, function has been called with only $($args.Count) arguments"

Любая причина, почему вы не используете param в ваших функциях и делает их обязательными?

Function A()
{
   Param
   (
      [Parameter(Mandatory=$true)][String]$Arg1,
      [Parameter(Mandatory=$true)][String]$Arg2
   )
   Write-Host "$Arg1 $Arg2"
}

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

Другие вопросы по тегам