Вывести в лог-файл номер строки
Я пытаюсь справиться с какой-то нестандартной ошибкой в моих функциях (например, неправильный ввод текста), и я хочу отследить эти ошибки, написав своего рода журнал в переменной. Я пытаюсь написать также номер строки, и это мой код
$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"
}
Если вы запустите эту функцию без каких-либо аргументов, она выдаст ошибку, запрашивающую обязательные аргументы.