У меня есть файл .ps1, который я выполняю из приглашения PS. В верхней части файла у меня есть:
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
и далее в коде:
$site = new-object Microsoft.SharePoint.SPSite $url;
Я получаю следующую ошибку:
Невозможно найти тип [Microsoft.SharePoint.SPWeb]: убедитесь, что
сборка, содержащая этот тип, загружена.
Если я запускаю оператор LoadWithPartialName
непосредственно из приглашения, тогда я могу выполнить сценарий.
Что я делаю не так?
- Обновление -
Когда я убираю пустоту, делаю код:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
ошибка не изменяется, поскольку LoadWithPartialName
выполняется без ошибок.
- Новая информация -
Это связано с добавлением функции с типизированным параметром 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.