PowerShell Remove-Item не может обрабатывать соединения

Windows Server 2012 использует PowerShell для создания файла журнала во временной папке:

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

Допустим, у вас уже запущен скрипт, и вы хотите удалить файл журнала в начале скрипта, используя что-то вроде этого:

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

Это не работает как Remove-Item кажется, больше на функцию AppData в $LogFile:

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

Кажется, мозг немного мертв Remove-Item не понимать узлы (AppData). Есть ли что-нибудь вокруг этого?

1 ответ

Хорошо, с помощью Etan выше, у меня есть обходной путь. $env:Temp возвращает краткий путь к имени файла, который работает для многих вещей, кроме Remove-Item. Поэтому обходной путь заключается в использовании GetFullPath для преобразования его в длинный путь, который затем может использовать Remove-Item:

Это не работает:

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

Это работает:

$LogFile =  [System.IO.Path]::GetFullPath($env:Temp + "\Test.log")
"Hello, World" > $LogFile
Remove-Item $LogFile
Другие вопросы по тегам