Журналирование событий в PS1 — крайне удобная вещь. Особенно на этапе отладки больших скриптов, к которым проблематично «прикрутить» хоть какие-нибудь прозрачные условия работы.
Наиболее простая функция логирования будет выглядеть вот так:
$log = "log.txt"
function Logging
{
Param ([string]$logstring)
$time = (Get-Date).toString("yyyy-MM-dd HH:mm:ss")
$logmessage = "$time $logstring"
Add-content $log -value $logmessage
}
Она пишет в текстовый файл log.txt строку формата 2022-06-15 10:00 Сообщение. Достаточно только в нужном месте скрипта объявить вызов функции:
Logging "Сообщение..."
Переменную $logmessage можно корректировать под свои нужды, добавляя переменные или статические данные. Важно соблюдать очередность построения фразы сообщения.
В качестве бонуса и чтобы не множить похожие посты: логирование в проектах Visual Studio на c# можно делать с помощью вот такого класса:
static class Logger
{
public static void WriteLine(string message)
{
using (StreamWriter sw = new StreamWriter(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\log.txt", true))
{
sw.WriteLine(String.Format("{0,0} {1}", DateTime.Now.ToString() + ":", message));
}
}
}
Соответственно вызвать его можно вот такой конструкцией:
Logger.WriteLine("Какой-то текст...");