Ne Powershell avoir un cache qui doit être nettoyé?
Ce matin, j'ai copié un répertoire de mon local, en réseau, lecteur de temp pour le test. Cette erreur est apparu.
Get-Content : Cannot find path 'C:\users\xxxxx\desktop\cgc\Automatic_Post-Call_Survey_-_BC,_CC.txt' because it does no
t exist.
At C:\users\xxxxx\desktop\cgc\testcountexcl1.ps1:55 char:12
+ Get-Content <<<< $txtfile | Get-WordCount -Exclude (Get-Content c:\temp\exclude.txt) | select -First 15
+ CategoryInfo : ObjectNotFound: (C:\users\xxxxx...ey_-_BC,_CC.txt:String) [Get-Content], ItemNotFoundEx
ception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
Ce serait prévu avec le déménagement...PS ne peut pas trouver le chemin d'accès référencé...mais j'ai fait les modifications suivantes avant d'exécuter le script (ancien commenté au dessus de la nouvelle):
$input = Get-Content c:\temp\wordCount.txt
<# $inpath = "C:\users\xxxxx\desktop\cgc\tx" #>
$inpath = "C:\temp\tx"
$srcfiles = Get-ChildItem $inpath -filter "*.txt"
$notPermittedWords = Get-Content c:\temp\exclude.txt
Ma première idée est qu'il y a une sorte de cache en tenant mon $inpath
variable de ma dernière course...mais n'ont pas été en mesure de savoir si ce que l'on attend PowerShell comportement. Suis-je une mauvaise interprétation de l'erreur ou de la solution? Comment puis-je vider le cache ou que ce soit varables peuvent être stockées dans la mémoire?
$inpath
et $srcfiles
étaient à la fois exécutée la deuxième fois avec la nouvelle valeur?ils ont été exécutés avec la nouvelle valeur, mais s'est COMPORTÉ comme si elles avaient été adoptées à l'ANCIENNE valeur.
OriginalL'auteur dwwilson66 | 2013-01-24
Vous devez vous connecter pour publier un commentaire.
Les Variables sont stockées dans la session, donc si vous fermez votre console powershell et en ouvrir un nouveau, toutes les variables personnalisées aura disparu. Si vous voulez voir ce que variables, utiliser
Get-Variable
. Pour supprimer une variable spécifique(pour s'assurer qu'il est parti), vous pouvez utiliser:Remove-Variable varname
.Comme pour vous remettre en question. Une variable dans le global(session) champ d'application est stockée dans la session jusqu'à ce qu'il soit supprimé ou écrasé. Si vous avez utilisé la même console powershell pour exécuter ce code à deux reprises, puis
$inpath
doit avoir été mis à"C:\temp\tx"
la deuxième fois, et$srcfiles
sera mis à jour avec la nouvelle liste de fichiers.cela n'a pas fonctionné pour moi
OriginalL'auteur Frode F.
Je n'aime pas l'idée d'avoir à le fermer et le rouvrir à chaque fois que j'ai besoin de vider le cache.
Cela fonctionne dans PowerShell
Remove-Variable * -ErrorAction SilentlyContinue; Remove-Module *; $error.Clear(); Clear-Host
Clairement la réponse que je cherchais. J'ai mis cette ligne en haut de mon script et maintenant je n'ai pas à re/ouvert PS ISE à chaque fois.
OriginalL'auteur Patrick
En outre à @Patrick réponse vous pouvez supprimer désigné modules suivants:
de pipe de façon inspirée de ici
ainsi, Patrick de one-liner qui allait devenir
Remove-Variable * -ErrorAction SilentlyContinue; ,@("MyModule1","MyModule2") | %{&Remove-Module -ErrorAction:SilentlyContinue $_}; $error.Clear(); Clear-Host
OriginalL'auteur Andreas Dietrich