远程调用脚本不起作用

时间:2016-11-08 14:45:04

标签: powershell sharepoint sharepoint-2013

我可以在我的SharePoint服务器上完美地运行此脚本,并且用户的个人资料图片会更新:

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")

$siteurl = "http://SHAREPOINTSITE/"
try {
    $site = New-Object Microsoft.SharePoint.SPSite($siteurl)
} catch { 
    New-Item -ItemType File -Path C:\Users\admin\Desktop -Name ERROR1.txt -Value $_.Exception.Message -Force
}
try {
    $context = [Microsoft.Office.Server.ServerContext]::GetContext($site)
} catch { 
    New-Item -ItemType File -Path C:\Users\admin\Desktop -Name ERROR2.txt -Value $_.Exception.Message -Force
}

#This gets the User Profile Manager which is what we want to get hold of the users
$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
$user = "DOMAIN\user.name"

#Put it in a loop for iterating for all users
if ($upm.UserExists($user)) {
    try {
        $profile = $upm.GetUserProfile($user)
        $profile["PictureURL"].Value = "\\Sharepoint\C$\Users\admin\Desktop\1.jpg";
        $profile.Commit();
    } catch {
        New-Item -ItemType File -Path C:\Users\admin\Desktop -Name ERROR3.txt -Value $_.Exception.Message -Force
    }
}

New-Item -ItemType File -Path C:\Users\admin\Desktop -Name HELLO.txt -Force

$site.Dispose()

但是当我从远程PowerShell会话中运行它时,我得到了一些奇怪的错误:

ERROR1.txt

  

使用“1”参数调用“.ctor”的异常:“找不到http://SHAREPOINTSITE/的Web应用程序。验证您是否正确输入了URL。如果URL应该为现有内容提供服务,系统管理员可能需要添加一个新的请求URL映射到预期的应用程序。“

ERROR2.txt

  

为“GetContext”和参数count:“1”找到了多个模糊的重载。

我检查了所有可能性here,但仍然看到了这个问题。

这就是我从远程机器调用上述脚本的方法:

$spfarm = "DOMAIN\admin.username"
$spfarmpw = ConvertTo-SecureString "password123" -AsPlainText -Force

$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $spfarm,$spfarmpw
$session = New-PSSession SharePoint -Authentication Default -Credential $cred

Invoke-Command -Session $session -FilePath "\\SharePoint\C$\Users\admin\Desktop\testremote.ps1"

我试过用几种不同的方式调用它(例如在我的机器上托管脚本或在SharePoint服务器上托管它,以及使用相对路径来调用脚本),但我总是看到这些错误。

任何人都可以帮助我理解为什么从远程PC调用它时这不起作用?该脚本显然被调用(HELLO.txt始终被创建),但SharePoint配置文件图片永远不会更新 - 即使该脚本肯定应该有效。

非常感谢任何帮助或指导

NSLOOKUP

nslookup SHAREPOINTSITE

输出

Server:    dc1.domain.co.uk
Address:   xx.xx.x.xx

Name:      sharepoint.domain.co.uk
Address:   yy.yy.y.yy
Aliases:   SHAREPOINTSITE.domain.co.uk 

yy.yy.y.yy是正确的IP(它与我在执行ping SHAREPOINTSITE时看到的地址相同)

1 个答案:

答案 0 :(得分:1)

尝试将Authentication方法更改为CredSSP。这是远程PowerShell所必需的,因此它可以传递凭据。