我有一个.ps1文件,我从PS提示符执行该文件。在文件的顶部,我有:
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
在代码的后面,它有:
$site = new-object Microsoft.SharePoint.SPSite $url;
我得到以下错误:
找不到类型[Microsoft.SharePoint.SWeb]:请确保已加载包含此类型的程序集。
如果我直接从提示符运行LoadWithPartialName
语句,那么我就可以执行该脚本。
我做错了什么?
-更新--
当我删除空白时,生成代码:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
由于CCD_ 2在没有错误的情况下执行。
--新信息--
它与添加一个SPWeb类型参数的函数有关。
这项工作:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$url = "http://siteurl/"
$site = new-object Microsoft.SharePoint.SPSite $url;
$site.Dispose();
这是有效的:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
function doSomething(){ }
$url = "http://siteurl/"
$site = new-object Microsoft.SharePoint.SPSite $url;
$site.Dispose();
但是,如果(你必须在它成为问题之前启动一个新的PS会话。此外,函数是在SPSite:的第一个实例化之前还是之后也无关紧要
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
function doSomething( [Microsoft.SharePoint.SPWeb] $web ){ }
$url = "http://siteurl/"
$site = new-object Microsoft.SharePoint.SPSite $url;
$site.Dispose();
我想次要的解决办法是不键入参数或将负载放入另一个ps1中。
这个程序集可能不在GAC中吗?如果不是,则它需要在PowerShell安装目录中,LoadWithPartialName才能找到它。仅供参考,LoadWithPartialName方法已过时,不推荐使用。如果您在PowerShell V2上,请尝试在文件系统上查找SharePoint.dll并使用Add-Type
,例如:
Add-Type -Path <path>Microsoft.SharePoint.dll