3

誰でもこれを行う方法を教えてもらえますか? 私が見つけた例はどれもうまくいかないようです。

私のサイトはhttps://blah.sharepoint.com/technologyで、私のリストは「pfa」と呼ばれています。テキスト列を追加したい。

さまざまなコマンドからいくつかの結果を取得できたため、Powershell を介して SharePoint Online に接続できます。

ありがとう。

4

2 に答える 2

2

PowerShell で CSOM を介して SharePoint Online にフィールドをプロビジョニングする方法

CSOM API には以下が付属しています。

リストまたはサイト列を追加します。

次の例は、リストにGeoLocationフィールドを追加する方法を示しています。Contacts

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")

function Provision-Field([Microsoft.SharePoint.Client.ClientContext]$Context,[string]$ListTitle,[string]$FieldSchema)
{
   $list = $Context.Web.Lists.GetByTitle($ListTitle)
   $List.Fields.AddFieldAsXml($FieldSchema,$true,[Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldToDefaultView)
   $Context.Load($List)
   $Context.ExecuteQuery()
}



$UserName = "username@contoso.onmicrosoft.com"
$Password = Read-Host -Prompt "Please enter your password" -AsSecureString
$URL = "https://contoso.sharepoint.com/"

$Context = New-Object Microsoft.SharePoint.Client.ClientContext($URL)
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,$Password)
$Context.Credentials = $Credentials

Provision-Field $Context "Contacts" "<Field Type='Geolocation' DisplayName='Location'/>"

PowerShell で REST を介して SharePoint Online にフィールドをプロビジョニングする方法

エンドポイント:

http://<site url>/_api/web/fields('<field id>')

http://<site url>/_api/web/lists(guid'<list id>')/fields('<field id>')

記事「PowerShell から SharePoint 2013 REST API を使用する」では、HTTPS 要求を SharePoint REST Web サービスに送信する方法について説明しています。

次の例は、記事のInvoke-RestSPO関数を使用して、PowerShell で REST API を使用して Note フィールドを List に追加する方法を示しています。

Function Add-SPOField(){

Param(
[Parameter(Mandatory=$True)]
[String]$WebUrl,

[Parameter(Mandatory=$True)]
[String]$UserName,

[Parameter(Mandatory=$False)]
[String]$Password,

[Parameter(Mandatory=$True)]
[String]$ListTitle,

[Parameter(Mandatory=$True)]
[String]$FieldTitle,

[Parameter(Mandatory=$True)]
[System.Int32]$FieldType
)


    $fieldMetadata = @{ 
      __metadata =  @{'type' = 'SP.Field' }; 
      Title = $FieldTitle;
      FieldTypeKind = $FieldType;
    } | ConvertTo-Json


   $Url = $WebUrl + "_api/web/Lists/GetByTitle('" + $ListTitle +  "')/fields"

   $contextInfo = Get-SPOContextInfo $WebUrl $UserName $Password
   Invoke-RestSPO $Url Post $UserName $Password $fieldMetadata $contextInfo.GetContextWebInformation.FormDigestValue
}




. ".\Invoke-RestSPO.ps1"   #InInvoke-RestSPO function

$UserName = "username@contoso.onmicrosoft.com"
$Password = Read-Host -Prompt "Please enter your password" 
$WebUrl = "https://contoso.sharepoint.com/"


Add-SPOField -WebUrl $WebUrl -UserName $UserName -Password $Password -ListTitle "Documents" -FieldTitle "Comments" -FieldType 3

参考文献

于 2014-08-15T09:55:52.880 に答える