J'ai un fichier .ps1 que j'exécute à partir de l'invite PS. Au sommet du fichier que j'ai:Dans PowerShell, l'objet ne se charge pas bien que j'appelle LoadWithPartialName
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
et plus tard dans le code, il a:
$site = new-object Microsoft.SharePoint.SPSite $url;
Je reçois l'erreur suivante:
Unable to find type [Microsoft.SharePoint.SPWeb]: make sure that the assembly containing this type is loaded.
Si je lance le LoadWithPartialName
déclaration de l'invite directement, alors je peux exécuter le script.
Qu'est-ce que je fais mal?
--Update--
Lorsque je supprime le vide, ce qui rend le code:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
l'erreur est inchangée car le LoadWithPartialName
est l'exécution sans erreur.
--Nouveaux Information--
Il a quelque chose à voir avec l'ajout d'une fonction avec le paramètre typé de SPWeb.
Cela fonctionne:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$url = "http://siteurl/"
$site = new-object Microsoft.SharePoint.SPSite $url;
$site.Dispose();
Et cela fonctionne:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
function doSomething(){ }
$url = "http://siteurl/"
$site = new-object Microsoft.SharePoint.SPSite $url;
$site.Dispose();
Mais ce casse si (vous devez commencer une nouvelle session de PS avant qu'il ne soit un problème aussi peu importe. si la fonction est avant ou après la première instanciation de 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();
Je suppose un travail secondaire -around est de ne pas taper le paramètre ou mettre le chargement dans un autre ps1.
Si vous supprimez la distribution à [vide] dans l'appel à LoadWithPartialName dans votre script, vous obtenez un message significatif? Aussi, courez-vous dans un environnement mixte 32 bits/64 bits? –
Il s'agit d'un Windows Server 2003 SP2 64 bits. Il fonctionne sur un hôte VMWare. Il utilise WSS plutôt que MOSS –
Est-ce la version 64 bits de WSS? –