Код:

# создаем функци ведения лога:
function moves_log($message) {
if (!(test-path "$RezultatPath\moves_log.xlsx")) { # Если таблицы нет
# Созадём объект Excel
$ex = New-Object -Com Excel.Application
# Добавляем рабочую книгу
$wb = $ex.Workbooks.Add()
# Начинаем работать с первым листом. Для простоты обращения к нему создаём соответствующую переменную:
$ws = $wb.Worksheets.Item(1)
# Переименовываем лист
$ws.Name = 'Лог перемещений'
# Заполняем ячейки - шапку таблицы
# $Sheet = $Excel.WorkSheets.Item(1)
$ws.Cells.Item(1,1) = “дата”
$ws.Cells.Item(1,2) = “время”
$ws.Cells.Item(1,3) = “номер документа”
$ws.Cells.Item(1,4) = “тип документа”
$ws.Cells.Item(1,5) = “кадастровый номер”
$ws.Cells.Item(1,6) = “актуальность”
$ws.Cells.Item(1,7) = “исходный файл”
$ws.Cells.Item(1,8) = “->”
$ws.Cells.Item(1,9) = “путь”
$ws.Cells.Item(1,10) = “итоговый файл”
# Выделяем жирным шапку таблицы
$ws.Rows.Item(1).Font.Bold = $true
# Выравниваем для того, чтобы их содержимое корректно отображалось в ячейке
$UsedRange = $ws.UsedRange
$UsedRange.EntireColumn.AutoFit() | Out-Null
# Переходим к не занятой строке
$lf = $ws.Range("A65536").End(-4162).Row + 1
# Заполняем
$ws.Cells.Item($lf,1) = $d
$ws.Cells.Item($lf,2) = $t
$ws.Cells.Item($lf,3) = $sDocNumber
$ws.Cells.Item($lf,4) = $DocTypeRus
$ws.Cells.Item($lf,5) = $sCadastralNumber
$ws.Cells.Item($lf,6) = $sDateCreateDoc
$ws.Cells.Item($lf,7) = $sSourceXmlFile.name
$ws.Cells.Item($lf,8) = "->"
$ws.Cells.Item($lf,9) = $RezultatPath
$ws.Cells.Item($lf,10) = $OutName
# Выравниваем для того, чтобы их содержимое корректно отображалось в ячейке
$UsedRange = $ws.UsedRange
$UsedRange.EntireColumn.AutoFit() | Out-Null
$wb.Save("$RezultatPath\moves_log.xlsx")
$ex.Quit()
} else { # Если таблица уже существует
# Созадём объект Excel
$ex = new-object -com Excel.Application
$wb = $ex.Workbooks.Open("$RezultatPath\moves_log.xlsx")
# Делаем лист активным
$ws = $wb.Worksheets.Item(1)
# Переходим к не занятой строке
$lf = $ws.Range("A65536").End(-4162).Row + 1
Write-Host "значения"
Write-Host "$d,$t,$sDocNumber,$DocTypeRus,$sCadastralNumber,$sDateCreateDoc,$sSourceXmlFile.name),$RezultatPath,$OutName"
start-sleep 5
# Заполняем
$ws.Cells.Item($lf,1) = $d
$ws.Cells.Item($lf,2) = $t
$ws.Cells.Item($lf,3) = $sDocNumber
$ws.Cells.Item($lf,4) = $DocTypeRus
$ws.Cells.Item($lf,5) = $sCadastralNumber
$ws.Cells.Item($lf,6) = $sDateCreateDoc
$ws.Cells.Item($lf,7) = $sSourceXmlFile.name
$ws.Cells.Item($lf,8) = "->"
$ws.Cells.Item($lf,9) = $RezultatPath
$ws.Cells.Item($lf,10) = $OutName
# Выравниваем для того, чтобы их содержимое корректно отображалось в ячейке
$UsedRange = $ws.UsedRange
$UsedRange.EntireColumn.AutoFit() | Out-Null
$wb.Save()
$ex.Quit()
}
}