質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SharePoint

SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

Q&A

解決済

2回答

7660閲覧

PowerShellのエラーについて。(Unable to find type [Microsoft.SharePoint.SPFieldType])

mie.8

総合スコア28

SharePoint

SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

0グッド

0クリップ

投稿2017/04/27 09:44

編集2017/04/28 00:52

【実行環境】
0. PowerShell Version 5.0

  1. Office365
  2. Window 7

PowerShellを使い、SharePoint 2013に「列の追加」を行いたいと考えております。
ネットを参考に、コードを書いて実行するも下記の様なエラーが出ます。

エラー内容:Unable to find type [Microsoft.SharePoint.SPFieldType]

翻訳すると、『SPFieldType』の型が無いよー。って意味のエラーだと思います。
調べ、アセンブリをロードしようと思いましたが、どれをロードすれば良いか分かりません。
*検索し、何度か該当しそうな物をロードしてみましたが、上手く行きませんでした。

参考までにコードを。。。

PowerShell

1# .NET CSOM モジュールの読み込み 2Add-Type -Path "dllファイルのパス入力" 3Add-Type -Path "dllファイルのパス入力" 4 5# サイト情報 6$siteUrl = "サイトのURL記載" 7$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl) 8 9# ログイン情報 10$accountName = "アカウントネーム入力" 11$password = ConvertTo-SecureString -AsPlainText -Force "パスワード入力" 12$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($accountName, $password) 13$ctx.Credentials = $credentials 14 15# リストの取得 16$list = $ctx.Web.Lists.GetByTitle("Web上のリスト名") 17 18# リストアイテム取得 19$camlQuery = [Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery(100) 20$colItems = $list.GetItems($camlQuery) 21$ctx.Load($colItems) 22$ctx.ExecuteQuery(); 23 24# 列のコレクション取得 25$fields = $list.Fields 26 27# 列の追加 28$fields.Add("memo", [Microsoft.SharePoint.SPFieldType]::Text, $false)

これを実行すると、エラーが出ます。
解消方法が分かりませんので、わかる方がいれば教えて下さい。

ちなみに、MSDNを調べ、アセンブリ:microsoft.sharepoint
をロードする文を追加しても、「Add-Type : Cannot add type~」
のようなエラーが出てしまいます。
*上記コードは、microsoft.sharepoint ロード文が無いものです。

参考URL(列の追加):リンク内容
参考URL(アセンブリロード):リンク内容

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Microsoft.SharePoint.SPFieldTypeは、SharePointが入っているサーバー環境で実行しないと参照ができないため、
このコードでは、クライアント環境で実行することはできません。

CSOMでの列追加はAddFiedlAsXMLメソッドを使用すると簡単です。

参考:
FieldCollection.AddFieldAsXml メソッド
Field 要素 (フィールド)

# 列の追加 $list.Fields.AddFieldAsXml("<Field Type='Text' DisplayName='memo'/>",$true,[Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldToDefaultView) $list.Update() $ctx.ExecuteQuery()

投稿2017/04/28 00:40

tears

総合スコア100

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mie.8

2017/04/28 01:01

ご回答ありがとうございます。 tears様の回答を見落としており、今試した所、列の追加が出来ました。 勉強になりました。 ありがとうございました。
guest

0

SPFieldType 列挙 (Microsoft.SharePoint)

Windows SharePoint Services 3

フィールドのフィールド型を指定します。
名前空間: Microsoft.SharePoint
アセンブリ: Microsoft.SharePoint (microsoft.sharepoint.dll 内)

このように、MSDN でクラスを調べると実装アセンブリが記載されています。この場合、アセンブリとして microsoft.sharepoint.dll が挙げられていますので、これをロードしてください。

PowerShell

1Add-Type -AssemblyName microsoft.sharepoint

投稿2017/04/27 09:58

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mie.8

2017/04/28 00:04

ご回答ありがとうございます。 本文に記載忘れましたが、MSDNで調べ上記の事を試しましたがエラーがでます。 上記の様なコードを、「モジュールの読み込み」箇所に書き実行しましたが、それでも上手く行かなかったので投稿させて頂きました。 エラー『Add-Type -AssemblyName microsoft.sharepoint~』のような。 自分の記載が足りず、申し訳ございませんでした。 追記したいと思います。
Zuishin

2017/04/28 00:17 編集

ではインストールしてないんでしょう。しているのであれば、そのディレクトリを探してみてください。
mie.8

2017/04/28 00:48

度々、ご回答ありがとうございます。 コマンド:[System.AppDomain]::CurrentDomain.GetAssemblies() | % { $_.GetName().Name } でロードされているアセンブリ一覧の確認。 ディレクトリの確認を行い、「Microsoft.SharePoint.SPFieldType.dll」 は、ありませんでした。 その為、ロードしようとし 1:[Reflection.Assembly]::LoadWithPartialName("Microsoft.Sharepoint") 2:[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Sharepoint") 3:[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Sharepoint") でも試しましたが、上手くロードされませんでした。 *ロードされたら情報?が表示されると思うのですが、表示されず、プロンプトが戻って来ます。 ロードコマンドは同じですが、一様3つ試してみました。
mie.8

2017/04/28 00:50

ちなみに、 ・PowerShell Version 5 ・Office365 ・Window 7 の環境で実行しています。
Zuishin

2017/04/28 00:53

SharePoint がインストールされてないんじゃないですか? そもそも別のサーバーにインストールされているものを扱いたいというのであれば tears さんの回答を参考にしてください。
mie.8

2017/04/28 01:02

tears様の回答を見落としており、試してみた所、無事追加出来ました。 Zuishin様も何度もご回答して頂き、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問