2017-11-07 40 views
1

PowerShellは非常に新しいものです。 PowerShellでフォルダ内のテスト結果ファイルのセットを削除しようとしています。 PowerShellコンソールを使用してコードを実行すると、動作します。同じコードはISEでは動作しません。PowerShellスクリプトはPowerShell Consoleでのみ動作し、ISEでは動作しません

Set-Location -Path "Path"; 

$testResultsFolder = Get-ChildItem -Include *TestResults -Recurse | ?{ $_.PSIsContainer } | Select-Object FullName; 
$date = Get-Date; 
$limit = 30; 


foreach($testResult in $testResultsFolder) 
{ 
    $resultsPath = Get-Item $testResult.FullName; 
    Get-ChildItem -Path $resultsPath -Recurse -Force | Where-Object { -not $_.PSIsContainer -and $date.Subtract($_.LastWriteTime).Days -gt $limit } | Remove-Item -Force; 
} 

これは、ISEからPowerShellコンソールから正常に動作しなく: は、以下のコードです。 ISEはエラーを表示しません。それは '完了'と言います。誰かが私が間違っていることにいくつかの光を投げることができますか?

+0

1. ISEを閉じてもう一度開きます。 2.コードを '.ps1'スクリプトファイルに入れます。 3. ISEのPowerShellプロンプトで名前を入力し、Enterキーを押して、ISEでスクリプトファイルを実行します。同じように動作することに注意してください。 –

+1

スクリプトとして実行していない場合は、変数によってISEでセッションが汚染されています。 – TheIncorrigible1

+0

@Bill_Stewart私はあなたの提案を試みたが、うまくいくが、ファイルは削除されない。しかし、私はコンソールで同じコードを使用して実行すると、ファイルを適切に削除しました。 –

答えて

0

これを試してみてください:

Delete.ps1

#Requires -Version 3 
$Path = 'C:\Temp' 

$Cleanup = (Get-ChildItem -Path $Path -Include '*TestResults' -Recurse -Directory).FullName 

ForEach ($Folder in $Cleanup) 
{ 
    Get-ChildItem -Path $Folder -File -Recurse -Force | 
     Where-Object { $PSItem.LastWriteTime -lt (Get-Date).AddDays(-30) } | 
     Remove-Item -Force 
} 

を一貫性のない結果になることができSet-Locationを使用して、動的変数を使用している場合は特に。可変ターゲットを使用することをお勧めしますので、一貫した結果が得られます。

+0

返信いただきありがとうございます。私は$ Pathを私のものに置き換えることでこれを試しました。 "Get-ChildItem:パラメータ名 'Directory'と一致するパラメータが見つかりません。" –

+0

@PraveenTataこれはあなたが 'PSv2'にいることを意味します。私は理由のためにそこに '#requires 'を入れました – TheIncorrigible1

+0

ありがとう、遅く返事を申し訳ありません。私はいくつかのことを試していた。これは私のオフィスのラップトップにあり、自分で更新できないため、私はこの問題を解決できるかどうかを確認します。 –

関連する問題