Назад | Перейти на главную страницу

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). Есть ли что-нибудь вокруг этого?

Хорошо, с помощью Этана выше у меня есть обходной путь. $ env: Temp возвращает короткий путь к имени файла, который работает для многих вещей Кроме Убрать предмет. Таким образом, обходным путем является использование 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