15

今朝、テスト用にローカルのネットワーク ドライブから一時フォルダーにディレクトリをコピーしました。このエラーが表示されました。

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

これは移動で予想されます...PSは参照されているパスを見つけることができません...しかし、スクリプトを実行する前に次の変更を加えました(古いものは新しいものの上にコメントアウトされています):

$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 

$inpath私の最初の気配は、前回の実行から変数を保持しているある種のキャッシュがあるということです...しかし、それがPowerShellの予想される動作であるかどうかを見つけることができませんでした。エラーまたは解決策を誤解していますか? キャッシュまたはメモリに格納されている可能性のある変数をフラッシュするにはどうすればよいですか?

4

3 に答える 3

21

キャッシュをクリアする必要があるたびに閉じて再度開く必要があるという考えは好きではありません。

これは PowerShell で動作します

Remove-Variable * -ErrorAction SilentlyContinue; Remove-Module *; $error.Clear(); Clear-Host

于 2014-04-22T17:48:53.057 に答える
13

変数はセッションに保存されるため、PowerShell コンソールを閉じて新しいコンソールを開くと、すべてのカスタム変数が失われます。存在する変数を確認したい場合は、 を使用しますGet-Variable。特定の変数を削除するには(それがなくなったことを確認するため)、次を使用できます。

Remove-Variable varname.

あなたの質問は。グローバル (セッション) スコープの変数は、削除または上書きされるまでセッションに格納されます。同じ PowerShell コンソールを使用してそのコードを 2 回実行した場合、2 回目$inpathに設定され、新しいファイルリストで更新されます。"C:\temp\tx"$srcfiles

于 2013-01-24T13:50:37.733 に答える
0

@Patrick の回答に加えて、次のように指定されたモジュールを削除できます。

,@("MyModule1","MyModule2") | %{&remove-module -erroraction:silentlycontinue $_}

ここからインスピレーションを得たパイプウェイ

パトリックのワンライナーはRemove-Variable * -ErrorAction SilentlyContinue; ,@("MyModule1","MyModule2") | %{&Remove-Module -ErrorAction:SilentlyContinue $_}; $error.Clear(); Clear-Host

于 2018-08-17T09:37:43.567 に答える