在PowerShell中,虽然我调用LoadWithPartialName,但对象未加载



我有一个.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

相关内容

  • 没有找到相关文章

最新更新