首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过powershell远程创建sharepoint网站集?

如何通过powershell远程创建sharepoint网站集?
EN

Stack Overflow用户
提问于 2021-05-11 23:36:09
回答 1查看 98关注 0票数 0

如何通过Powershell远程创建新的网站集我尝试了以下几种方法,但都失败了:

代码语言:javascript
复制
# Create a PSCredential Object using the "User" and "Password" parameters that you passed to the job
$SecurePassword = '...............' | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList "domain\user", $SecurePassword
$spms = New-PSSession -ComputerName servername -Credential $cred 


$Parameters= @{

Session = $spms

ArgumentList ="siteurl","sitename",'domain\user','domain\user2'
ScriptBlock = { Param ($SiteURL,$SiteName,$SiteOwner,$SecondSiteOwner)
                Add-PSSnapin Microsoft.sharepoint.powershell -ErrorAction SilentlyContinue
                Function Recreate_Site_Collection ($SiteURL,$SiteName,$SiteTemplate,$SiteOwner,$SecondSiteOwner){
# Delete Site Collection
$site = get-spsite  -Identity $SiteURL -ErrorAction SilentlyContinue
if($site){

Write-host "Removing the site $SiteURL" -f Red
Remove-SPSite -Identity $SiteURL -Confirm:$false
}
# Create Site Collection
Write-host "creating  the site $SiteURL" -f green
echo $SiteOwner 
echo $SecondSiteOwner
New-SPSite -Name $SiteName -Url $SiteURL -Template $SiteTemplate -OwnerAlias $SiteOwner -SecondaryOwnerAlias $SecondSiteOwner -Confirm:$false
}
                $SiteTemplate = "DEV#0" #Developer Site Template

                 Recreate_Site_Collection $SiteURL $SiteName $SiteTemplate $SiteOwner $SecondSiteOwner
}}
Invoke-Command  @Parameters

错误:找不到用户。但是,如果我使用相同的变量在服务器上运行相同的代码,那么当我以管理员身份运行PowerShell时,它会正常运行

试验二:

代码语言:javascript
复制
# Create a PSCredential Object using the "User" and "Password" parameters that you passed to the job
$SecurePassword = '..........' | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList "domain/user", $SecurePassword
$spms = New-PSSession -ComputerName servername -Credential $cred 


$Parameters= @{
Session = $spms
ArgumentList = "siteurl","sitename",'domain/user',"1033","DEV#0"
ScriptBlock = { Param ($PortalUrl,$SiteName,$userName,$LCID,$WebTemplate)
$adminSiteUrl = "centraladminurl"
$user = "user"
$pwd = '..............'
$securePwd = ConvertTo-SecureString $pwd -AsPlainText -Force
$cred = New-Object PSCredential($user, $securePwd)
$wsdlUrl = $adminSiteUrl + "/_vti_adm/Admin.asmx?WSDL"
$svc = New-WebServiceProxy -Uri $wsdlUrl -Credential $cred
$svc.Timeout = 300000    # 5 minute timeout
$svc.CreateSite(
    $siteUrl,   # URL
    $siteTitle, # Title
    $Description, # Description
    $LCID, # LCID 1033 arabic
    $WebTemplate,    # WebTemplate
    $user,      # Owner Login
    "user",  # Owner Name
    "mail",
    $PortalUrl ,
    "portalname"
    )}}
    
    Invoke-Command  @Parameters

错误:使用"10“个参数调用"CreateSite”时出现异常:“引发了'Microsoft.SharePoint.SoapServer.SoapServerException‘类型的异常。”但是,当使用PowerShell以管理员身份在服务器上运行相同的脚本时,它也使用相同的变量

请帮助我需要从詹金斯自动化SharePoint部署,这需要一个远程PowerShell脚本和主要步骤是创建网站它不能建立

EN

回答 1

Stack Overflow用户

发布于 2021-06-02 01:26:57

这肯定是一个权限问题,但它可能是一种痛苦的发现。我的用户(运行脚本的用户-可能是您的Jenkins用户)是:

  • 是服务器上的本地管理员,
  • 列在https://sharepointsite/ >网站设置>权限>网站集Administrators.

但在远程运行时仍然会出现奇怪的错误:

代码语言:javascript
复制
# These commands did not work - I'm quoting the errors:
Enter-PSSession -ComputerName MySPServer
Add-PSSnapIn Microsoft.SharePoint.PowerShell
$URI = 'https://MySharePoint.domain.com'

# Can't pipe Site object to Web
Get-SPSite $URI | Get-SPWeb
'Get-SPWeb : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))'

# Can't get SP users using web:
$web = Get-SPWeb $URI
Get-SPUser 'DOMAIN\user' -Web $web
'Get-SPUser : Cannot find an SPWeb object with Id or Url: 7aee0dc1-fe3b-4f9b-bd4b-000000000000 and Site Id: 8b662499-bb26-41ce-978e-000000000000.'

# Can't list properties of a site object
Get-SPSite $URI | fl
'Exception has been thrown by the target of an invocation.'

# Can't create a new site because the user can't be found:
New-SPSite -Url $URI -Name 'Test' -Description 'Test Site' -Template 'DEV#0' -OwnerAlias 'DOMAIN\user'
'New-SPSite : User cannot be found.'

我发现由于某些原因,我的用户在powershell中没有显示为站点管理员。注意,我在这里直接在服务器上运行,以便查看用户:

代码语言:javascript
复制
$URI = 'https://MySharePoint.domain.com'
$web = Get-SPWeb $uri
Get-SPUser "$env:USERDOMAIN\$env:USERNAME" -Web $web | Select UserLogin,IsSiteAdmin,IsSiteAuditor,AllowBrowseUserInfo

'UserLogin   IsSiteAdmin IsSiteAuditor AllowBrowseUserInfo
 ---------   ----------- ------------- -------------------
 DOMAIN\user False       False         True'

因此,我将自己添加为主站点的站点管理员,如下所示:

代码语言:javascript
复制
# Set my user as collection admin:
Get-SPUser 'DOMAIN\User' -Web $web | Set-SPUser -IsSiteCollectionAdmin:$true

# Check permissions again:
Get-SPUser "$env:USERDOMAIN\$env:USERNAME" -Web $web | Select UserLogin,IsSiteAdmin,IsSiteAuditor,AllowBrowseUserInfo

'UserLogin   IsSiteAdmin IsSiteAuditor AllowBrowseUserInfo
 ---------   ----------- ------------- -------------------
 DOMAIN\user True        True          True'

Get-SPSite $uri | fl UserIsSiteAdminInSystem

'UserIsSiteAdminInSystem : True'

现在,上面的所有命令都可以正常工作。似乎sharepoint的powershell模块需要一些访问主webservice对象的权限才能解析用户名。我不确定真正需要什么级别的访问权限,但这对我来说很有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67489971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档