nai*_*sts 33 powershell sharepoint dispose sharepoint-2007
有时我们需要在SharePoint中执行小型管理任务.一个简单的PowerShell脚本是一个非常好的工具.例如,这样的脚本可以枚举列表的事件处理程序:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$site = new-object Microsoft.SharePoint.SPSite($args[0])
$site.RootWeb.Lists["MyList"].EventReceivers > C:\MyListHandlers.txt
Run Code Online (Sandbox Code Playgroud)
据了解,类似的对象SPSite,并SPWeb必须Dispose()在通话后-d,否则会出现内存泄漏.最好的是打电话
$site.RootWeb.dispose()
$site.dispose()
Run Code Online (Sandbox Code Playgroud)
在这个脚本的末尾.但是如果这是一个只运行一次的Powershell脚本,并且我们知道PowerShell在执行后会清理 - 那么不调用dispose()是不是很糟糕?
所以,我的问题是 - 如果有时我运行这样的脚本,会有一些危险吗?它会影响SharePoint场(或我运行脚本的服务器)的整体稳定性吗?
Pet*_*ale 17
这已被编辑,包括一个安全,非特定的答案.
一般情况下:处置所有内容,因为Dispose是.NET框架释放外部资源的方式(例如文件句柄,TCP端口,数据库连接等).除非您调用Dispose(),否则不保证释放资源.所以要小心.这是一般的非SharePoint答案.
特别是在处理SharePoint时:关闭PowerShell.exe进程时,将释放内存.如果您需要处理物体以降低内存压力(在生产环境中很重要,或者如果您在所有站点/网络上循环),请务必进行处置.如果没有,您不必担心处置.
我们之所以如此疯狂,首先处理的原因是因为大多数SharePoint代码在长时间运行的进程中运行(在ASP.NET工作进程或OWSTimer.exe中)并且无法处置会导致难以排除故障,突如其来的灾难(即网络服务器热潮).在PowerShell中工作时,这些灾难性的性能问题/ OutOfMemoryExceptions大多数时间都不会影响我.我运行临时脚本,浪费了大约3-50MB的RAM,因为我无法处理我的对象,我关闭了PowerShell窗口并释放了内存.大部分时间都不是问题.
我已经构建了使用SharePoint的脚本,而且大多数时候我都不打算处理.
| 归档时间: |
|
| 查看次数: |
29447 次 |
| 最近记录: |