Aqui está a coisa, você está dizendo ao PowerShell para escrever para ". \ log.log" e é. É só que não acho que está escrevendo onde você espera que seja. Ele está escrevendo para onde get-location é, que é na verdade um padrão que normalmente é o diretório do usuário (ou o da conta que o está executando). Verifique .\users\<username>\log.log e veja se está lá. Agora, o que você quer é uma maneira de obter o diretório de execução de script atual e escrever sua saída lá. Você pode fazer isso assim:
function Get-ScriptDirectory
{
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
Split-Path $Invocation.MyCommand.Path
}
$ScriptDir = Get-ScriptDirectory
No seu caso, $LogFile seria realmente:
$LogFile = "$ScriptDir\log.log"
Confira Invoke-WebRequest :) Você pode achar mais fácil solicitações da web. Você também pode considerar adicionar um finally ao seu try\catch , de modo que seja um try\catch\finally . O bloco finally sempre é executado e você pode usá-lo para registrar a execução de scripts (nesta instância).