powershell newb здесь. У меня возникли трудности с попыткой записать мой вывод в файл. Я пробовал две тактики, обе из которых не работают для меня. Первый использует командлет Start/Stop-Transcript. Это отлично работает при тестировании на моей локальной машине, но, похоже, не работает вообще в сценарии, который я развертываю на рабочих станциях.Как зарегистрировать вывод в файл
$path1 = Test-Path ($env:ProgramFiles + "\Sophos\Sophos Anti-Virus\SavService.exe")
$path2 = Test-Path (${env:ProgramFiles(x86)} + "\Sophos\Sophos Anti-Virus\SavService.exe")
$shareloc = '\\SERVER1\NETLOGON\SophosPackages\SophosInstall_wFW_Silent.exe'
$logpath = '\\SERVER1\NETLOGON\si_sophos_log.txt'
if (($path1 -eq $true) -or ($path2 -eq $true)) {} ELSE {
& $shareloc
Start-Transcript -Append -Path $logpath | Out-Null
Write-Output ""
Get-Date
Write-Output "Sophos has been installed on `"$env:COMPUTERNAME`""
Write-Output ""
Stop-Transcript
}
Так я предпочел бы сделать это, является использование: | Out-File -Append -FilePath $logpath
Я думаю, что это было бы предпочтительным методом, поскольку он будет поймать какую-либо ошибку, которая может возникнуть в журнале, как и проставление на Start-Transcript. Когда я пытаюсь использовать этот метод, однако, я получаю сообщение об ошибке на трубопроводе "An empty pipeline element is not allowed."
$path1 = Test-Path ($env:ProgramFiles + "\Sophos\Sophos Anti-Virus\SavService.exe")
$path2 = Test-Path (${env:ProgramFiles(x86)} + "\Sophos\Sophos Anti-Virus\SavService.exe")
$shareloc = '\\SERVER1\NETLOGON\SophosPackages\SophosInstall_wFW_Silent.exe'
$logpath = '\\SERVER1\NETLOGON\si_sophos_log.txt'
if (($path1 -eq $true) -or ($path2 -eq $true)) {} ELSE {
& $shareloc
Write-Output ""
Get-Date
Write-Output "Sophos has been installed on `"$env:COMPUTERNAME`""
Write-Output ""
} | Out-File -Append -FilePath $logpath
Спасибо заранее за любую помощь!
Это сделало трюк, спасибо! – user3216526