PowerShell Remove-Item não pode manipular junções

1

Windows Server 2012 usando o PowerShell para criar um arquivo de log na pasta temp:

$LogFile = $env:temp + "\MigrateMyDocs.log"

Digamos que o script de alguém já tenha sido executado e você queira excluir o arquivo de log no início do script usando algo parecido com isto:

If (Test-Path($LogFile)) {
    [void](Remove-Item -Path $LogFile -Force)
}

Não funciona, pois Remove-Item parece basear-se na função AppData em $LogFile :

"C:\Users\IT0A9D~1.SUP\AppData\Local\Temp\MigrateMyDocs.log"

Parece que um pouco de morte cerebral de Remove-Item não entende junções (AppData). Existe alguma coisa em torno disso?

    
por Rob Nicholson 30.07.2013 / 19:43

1 resposta

3

Ok, com a ajuda do Etan acima, eu tenho uma solução alternativa. $ env: Temp retorna um caminho curto de nome de arquivo que funciona para muitas coisas exceto Remove-Item . Portanto, a solução é usar GetFullPath para convertê-lo em um caminho longo, que Remove-Item pode usar:

Isso não funciona:

$LogFile = $Env:Temp + "\Test.log"
"Hello, World" > $LogFile
Remove-Item $LogFile

Isso funciona:

$LogFile =  [System.IO.Path]::GetFullPath($env:Temp + "\Test.log")
"Hello, World" > $LogFile
Remove-Item $LogFile
    
por 12.08.2013 / 15:53