Мне нужно создать файл журнала для каждого действия, выполняемого этим скриптом.
Я попытался использовать перенаправление (>>), однако не могу получить вывод для фактической записи в файл.
while($true){
$FromMC = Get-ChildItem -Path "\\x\From MC" -Filter *.mpg
Write-Host "Checking '\\x\From MC' for files" -ForegroundColor Cyan
Write-Host $FromMC.count"Files Found" -ForegroundColor Cyan
Write-Host ""
ForEach($file in $FromMC){
try{
Move-Item -Filter 7ST* -Path $file.Fullname -Destination "\\x\programs\7TH STREET THEATER" -Verbose -Force -ErrorAction Stop
}
catch{...}
Write-Host "Pausing for"$ts.Minutes"minutes..." -ForegroundColor Cyan
Write-Host "Ctrl+C to Stop"
Write-Host ""
Start-Sleep -Seconds $ts.TotalSeconds
}
Я ожидаю, что вывод будет точно таким же, как вывод "-verbose" в оболочку. Типы вывода: Write-Host, Verbose, Write-Warning
Я чувствую, что решение чрезвычайно простое, и я просто не замечаю его.
взгляните на аудит powershell. это получает почти все ... и устанавливается на уровне ОС, а не в каком-либо конкретном сценарии. это группа настроек GPO, которыми можно легко управлять.





Чтобы записать все, что обычно пишется в консоль, например -verbose, вы можете использовать Start-Transcript, а когда закончите, Stop-Transcript.
Пример:
Start-Transcript -Path "C:\logs.txt"
#run code you want to capture
Stop-Transcript
Write-Host не перенаправляется, он используется для взаимодействия с пользователем на консоли. Вместо этого используйте
Write-Output(или просто не назначайте возвращаемые значения). А вывод ошибок можно перенаправить через2>>.