このスクリプト スニペットは、関数内で SharePoint サイト (Web) にアクセスしています。メモリ リークを回避するために、関数の最後までに破棄する必要がある SPWeb オブジェクトを作成します。通常、オブジェクトを破棄する方法は のようなもの$web.dispose()
です。この場合、SPWeb オブジェクトが作成され、パイプラインで使用されますが、名前はありません。
コードは次のとおりです。
function foobar {
$x = Get-SPWeb -Identity "http://mylocalsite/Sites/test1/test2" |
ForEach-Object {$_.Lists | Where {$_.Title -EQ "someLibrary"} |
Select ID }
}
SPWeb オブジェクトがパイプラインの最後で自動的に破棄されず、メモリ リークが発生していると思われます。
パイプラインで作成されたオブジェクトを破棄するにはどうすればよいですか? 私もする必要がありますか?
参考$x
までに、「Dispose」という名前のメソッドがないため、$x.Dispose()
機能しません。