После нашего чата Я понимаю, что вы пытаетесь сделать. Вы хотите написать собственный индикатор выполнения, который записывает как в файл журнала, так и в консоль без разрывов строк. Для этого вы можете написать функцию, которая выполнит ее, но я рекомендую выбрать новое имя, которое не конфликтует с существующим командлетом. Я буду использовать Write-MyProgress
.
Function Write-MyProgress{
[cmdletbinding()]
Param(
[parameter(valuefrompipeline=$true)]$message,
[switch]$NoNewLine
)
if($global:LogFile -eq $null)
{
$global:LogFile = $logFile
}
Add-Content -Value $message -Path $LogFile -NoNewline:$NoNewLine
Write-Host $Message -NoNewLine:$NoNewLine
}
Затем вы можете вызвать это явно:
Write-MyProgress ([char]9632) -NoNewLine
или отправьте вещи к нему:
[char]9632 | Write-MyProgress -NoNewLine
Или, если вы не хотите использовать функцию, вы можете просто сделать все это с помощью собственных командлетов, как в этом примере:
1..10 | ForEach-Object -Process {
[char]9632 | Add-Content $LogFile -NoNewLine -PassThru | Write-Host -NoNewLine
start-sleep -Sec 1
} -End {Add-Content -Value '' -Path $LogFile}
(Обратите внимание, что в конце я добавляю ''
к файлу журнала, чтобы после завершения индикатора выполнения файл журнала получал новую строку)