1 votes

PowerShell Remove-Item ne peut pas gérer les jonctions

Windows Server 2012 en utilisant PowerShell pour créer un fichier journal dans le dossier temp :

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

Disons qu'un script a déjà été exécuté et que vous voulez supprimer le fichier journal au début du script en utilisant quelque chose comme ceci :

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

Il ne fonctionne pas comme Remove-Item semble s'appuyer sur la fonction AppData de l'application $LogFile :

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

C'est un peu la mort cérébrale de Remove-Item de ne pas comprendre les carrefours (AppData). Existe-t-il un moyen de contourner ce problème ?

4voto

Rob Nicholson Points 1678

Ok, avec l'aide d'Etan ci-dessus, j'ai trouvé une solution. $env:Temp renvoie un chemin d'accès court au nom de fichier qui fonctionne pour beaucoup de choses. sauf Remove-Item . La solution de contournement consiste donc à utiliser GetFullPath pour le convertir en un chemin long, que Remove-Item peut ensuite utiliser :

Ça ne marche pas :

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

Ça marche :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X