PowerShellでリストURL(パス)を変更

お久しぶりです!SSSテクニカルサポートです。

季節が移り変わるのも早いもので、だいぶ寒くなってきましたね。

風邪など引かぬように暖かくお過ごしください!

さて今回は PnP PowerShell でリストやドキュメントライブラリの URL を変更する方法をご紹介します。

リストやドキュメントライブラリの URL は SharePoint Designer 2013 を使用すれば変更可能でしたが、
SharePoint Designer 2013 もサポート終了してしまうので、別な方法で変更したいですよね。

以下にコマンド列をご紹介しますので、是非お試しください。

# サイトURLを指定します
$SiteURL = "https://ssstesttenant.sharepoint.com/sites/test_team"

# 変更対象のリスト名を指定します
$ListTitle = "testList" 

# 新しいパスを指定します
# リストの場合は"Lists/"を付けます
$NewPath = "Lists/newTestList"

# サイトコレクションに接続します 
Connect-PnPOnline -URL $SiteURL -Interactive

# 変更対象のリストの現在の設定を確認します
Get-PnPList -Identity $ListTitle

# パスの変更を実行します
Set-PnPList -Identity $ListTitle -Title $ListTitle -Path $NewPath

※PnP PowerShell のインストールについては、こちらを確認してください。
※この記事を書いた時点では、1.11.116-nightly のバージョンで動作確認してます。


以上となります。

また簡単なコマンド例をご紹介できればと思いますので、時間が空いた時などにSSSサポートブログをチェックしてくださいね!

SSSテクニカルサポート

Microsoft Search(モダン検索)から従来の検索(クラシック検索)へ切り替える

こんにちは!GWはリフレッシュできましたか?

今回のブログ記事はSSSテクニカルサポート(技術的な問い合わせの担当です!)の方からお送りいたします。

皆さまはクラシックサイトとモダンサイト、どちらを使っていますか?

今はモダンサイトの方が推奨されているとは思いますが、クラシックサイトを使用している場合も多々あるかと思います。

過去のクラシックサイトを確認してみたら、いつの間にかMicrosoft Search(モダン検索)になっていて、従来の検索(クラシック検索)が使えなくなってしまっていた……ということもあるかもしれません。

そこでモダン検索とクラシック検索の切り替え手順をご説明します!

この手順はPnP PowerShellを使用しますので、予めモジュールをインストールして準備をしてくださいね。


まずサイトコレクションに接続します。

Connect-PnPOnline -Url https://ssstest.sharepoint.com/sites/team_classic -Interactive

認証するアカウントはサイトコレクションの管理者権限で大丈夫ですよ。

このとき「-Interactive」を付けることで、多要素認証を使用しているアカウントでも認証可能になります。

次に現在の検索設定を確認しましょう。

Get-PnPSearchSettings

特に何もしていなければ、以下の結果になるかと思います。

これは特に明示的に設定しておらずデフォルトのままということですので、実際にどの検索を使用しているかはサイトにアクセスして確認してくださいね。

では、実際にクラシック検索へ変更を行いましょう。

Set-PnPSearchSettings -Scope Site -SearchBoxInNavBar ModernOnly

これはサイトコレクションに対して設定をしています。

サイト単位で設定する場合は、「Scope」パラメータを「Site」から「Web」にしてください。

Set-PnPSearchSettings -Scope Web -SearchBoxInNavBar ModernOnly

逆にモダン検索に変更するには以下のコマンドになります。

Set-PnPSearchSettings -Scope Site -SearchBoxInNavBar AllPages

設定が完了したら、もう一度検索設定を確認しましょう。

Get-PnPSearchSettings

設定変更は基本的にすぐに反映されますが、もし反映されない場合は時間を置くか、それでも反映されなかったらキャッシュの削除などを行ってみてくださいね。


以上となります。

簡単に設定変更を行えますので、サイト用途に合わせて設定を変更してみてください。

弊社のSSSサービスではこのようなPowerShellを使用した設定変更手順もご案内することが可能です。

もし興味がございましたら、お気軽にお問い合わせください。

今後もこのようなブラウザ上からでは変更できない設定もご紹介していきますので、標準機能はばっちり!という方も是非SSSサポートブログをチェックしてくださいね!

SSSテクニカルサポート

タスクスケジューラで SharePoint 関連のPowerShellスクリプトを実行する

みなさん、こんにちは。SSS担当です。
更新が滞っている間に(すみません)、だいぶ暖かくなってきましたね。

さて今回の話ですが、SharePointオンプレミス環境でSharePoint関連のPowerShellスクリプトを実行する際、「SharePoint管理シェル」を使用しているかと思います。

こちらのPowerShellスクリプトをタスクスケジューラにて定期的に実行するにはどのようにすればいいでしょうか。

まずPowerShellスクリプト(PS1ファイル)の頭に下記のコマンドを記載し、PowerShellスナップインを追加します。

if(-not(Get-PSSnapin | where { $_.Name -eq "Microsoft.SharePoint.PowerShell"})) {
      Add-PSSnapin Microsoft.SharePoint.PowerShell; 
}

そのあとにメインを処理を記載すればOKです。

さてPowerShellスクリプトが出来たら次はタスクスケジューラの設定ですが、操作タブを以下のように設定します。


操作:プログラムの開始

プログラム/スクリプト:%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
※PowerShellを指定します

因数の追加:-Command D:\bat\SharePointPS.ps1
※スクリプトファイルを指定します。


他の設定は任意で行ってください。

以上となります。分かってしまえば簡単ですね。

弊社のSSSサービスは、SharePointに関するお問い合わせが回数無制限のサポートサービスです。
もし興味がありましたらお気兼ねなく「お問合せ」からご連絡下さい。

SharePoint 2019 コミュニケーションサイト でどうしてもスクリプトエディターを使いたい!

皆様!新年あけましておめでとうございます。

弊社は新型コロナの影響を受け大きく在宅ワークへの切り替えを行いましたが皆様はいかがでしょうか?

 

早速ですが、SharePoint Online のモダンサイトでスクリプトを許可する場合、皆さんご存じ以下のPowerShellスクリプトを利用します。

Set-SPOsite <SiteURL> -DenyAddAndCustomizePages 0

参考:https://docs.microsoft.com/ja-jp/sharepoint/allow-or-prevent-custom-script

では、SharePoint 2019 オンプレミスバージョンではどうでしょうか。

 

今回私は諸事情により、モダンサイトにあるWikiページ(クラシックUI)で、スクリプトエディター や コンテンツエディター を使用したいと思っていました。

おなじみスクリプトエディター!

 

しかし、SharePoint 2019 のコミュニケーションサイトではこの「メディアおよびコンテンツ」が使用できませんでした。※モダンチームサイトでは使用可能でした。

メディアおよびコンテンツ カテゴリ自体がない…。

 

こちらいろいろ調査したところ、サイトコレクション機能[ BasicWebParts ]という隠し機能を有効化する必要がありました。

チームサイトのみ有効化されていました。

 

モダンとクラシックを同時に使用することはあまり推奨できませんが、今だけ、どうしてもSharePoint 2019 コミュニケーションサイトにカスタマイズしたクラシックページを追加したい…!という方がいらっしゃいましたら以下コマンドをお試しください。

Enable-SPFeature -identity "00bfea71-1c5e-4a24-b310-ba51c3eb7a57" -URL http://サイトコレクションURL 

弊社のSSSサービスは、SharePointに関するお問い合わせが回数無制限のサポートサービスです。
もしご興味がありましたら是非「お問合せ」からご連絡下さい。

サポートメンバー一同、ご連絡お待ちしております!

Office 365 グループに紐付けられたチームサイトの完全削除

こんにちは。SSS担当です。
新年度となり新しいサイトコレクションを作成する機会が増えるかと思います。

そんなとき以前作成したテストサイトに、新しく作成するサイトコレクションに指定したいURLを使われていた、ということもあるかもしれません。
その際は、必要のないサイトコレクションを [完全に削除] することで、URLを再利用可能です。

通常のサイトコレクションは、SharePoint 管理センターから [削除] をした後、[削除されたサイト] から [完全に削除] が可能です。

しかし Office 365 グループに紐付けられたチームサイトを削除した場合は、UI上から [完全に削除] を行うことができません。
[完全に削除] を行うには、SharePoint Online Management Shell を使用して、以下コマンドを実行します。

  1. SharePoint Online Management Shell を起動します。
  2. 以下のコマンドで、テナント管理者アカウントにて SharePoint 管理センターへ接続します。
Connect-SPOService -Url https://xxxxxxxxx-admin.sharepoint.com
  1. 以下のコマンドで [削除されたサイト] にあるサイトコレクション一覧を確認できます。
Get-SPODeletedSite
  1. 以下のコマンドで [削除されたサイト] にある指定したサイトコレクションを [完全に削除] 可能です。
Remove-SPODeletedSite -Identity https://xxxxxxxxx.sharepoint.com/sites/xxxxxx
  1. [完全に削除] されたかどうか確認します。
Get-SPODeletedSite

以上です。

弊社のSSSサービスは、SharePointに関するあらゆるお問い合わせが回数無制限のサポートサービスです。
もし興味がありましたらお気兼ねなく「お問合せ」からご連絡下さい。

Copy-SPSite 実行後、コピー先サイトに接続ができない場合の対処法。

皆様こんにちは!SSS担当です!
東京には雪が降ると噂がありましたが、結局降らず良いような悪いような…。
寒いですが体調崩されていないでしょうか?

さて、タイトルの通り、SharePointのオンプレミス(2013, 2016, 2019)で使用できるPowerShell「Copy-SPSite」コマンドについて、ナレッジの少ない事象を発見致しました。

【事象】

サイトコレクションのコンテンツデータベースやURLを変更するためによく使用される 「Copy-SPSite」 ですが、正常に実行完了しても、コピー先URLにアクセスすると 404 エラーでサイトが表示されないことがあります。
また、404で表示されないサイトは全体管理から見ると、サイト情報がない状態で存在しており、「Remove-SPSite」で削除することもできなくなります。

コマンドは正常完了しますが…
サイトは404で存在しません
もう一度実行しようとすると、既に存在すると怒られてしまいます…。

【原因】

実はこの 「Copy-SPSite」コマンド、 -TargetUrl のパラメータの最後に「/」がついているとうまく実行完了できません。

NGパターン

Copy-SPSite http://sp201904/sites/test01 -DestinationDatabase testContentDB -TargetUrl http://sp201904/sites/test01_copy/  

OKパターン

Copy-SPSite http://sp201904/sites/test01 -DestinationDatabase testContentDB -TargetUrl http://sp201904/sites/test01_copy 

【解決方法】

以下のように「ForceDeleteSite」を使用して宙に浮いてしまっているサイトを削除し、(完全に削除されるまで少し待ってから)あらためて「/」なしで Copy-SPSiteを実行しましょう。

$siteUrl = "http://sp201904/sites/test01_copy"
$site = get-spsite $siteUrl
$siteId = $site.Id
$siteDatabase = $site.ContentDatabase
$siteDatabase.ForceDeleteSite($siteId, $false, $false)
削除後少し待てば、Copy-SPSiteの再実行が可能です

SSSではこのようにSharePoint オンプレミスの質問やお困りごとにも対応しております。
もし興味がありましたらお気兼ねなく「お問合せ」からご連絡下さい。

SharePointOnline外部ユーザーを完全に削除する手順(PowerShell)

SPOでの外部ユーザーを完全に削除するには2段階が必要ですよ!

以下の2段階の削除を行っていただければ外部ユーザーの完全な削除ができます!

①SharePointサイト上で権限を削除

②Azure Active Directoryのアカウントを削除

外部ユーザーの権限の問題でも発生しましたら、ぜひご活用ください~~~!!

①SharePointサイト上で権限を削除

1.SharePoint Online Management Shellを右クリックし、管理者として開きます。

  その後、以下のコマンドを実行し、テナント管理者のアカウントにてSharePoint Onlineに連結します。

Connect-SPOService -Url https://テナント名.sharepoint.com

2.該当の外部ユーザーをゲットします。

Get-SPOExternalUser -filter <外部ユーザーのアカウント>
例)Get-SPOExternalUser -filter user@account.co.jp

3.変数に外部ユーザーを保存します。

$ExtUser = Get-SPOExternalUser -filter <外部ユーザーのアカウント>
例)$ExtUser = Get-SPOExternalUser -filter user@account.co.jp

4.外部ユーザーの固有のIDを削除します。

Remove-SPOExternalUser -UniqueIDs @($ExtUser.UniqueId)

5.対象のサイトの全てのユーザーをゲットし、該当のユーザーのLoginNameを確認します。

Get-SPOUser -Site https://テナント名.sharepoint.com/sites/xxxxxxx | FT –a

* -Siteの後ろに対象のサイトコレクションのURLを入力します。

6.「5.」にて確認したLoginNameを利用し、対象のサイトのユーザーを削除します。

Remove-SPOUser -Site https://テナント名.sharepoint.com/sites/xxxxxxx -LoginName <「5.」にて確認したLoginName>
例)Remove-SPOUser -Site https://テナント名.sharepoint.com/sites/xxxxxxx -LoginName user_account.co.jp#ext#@テナント名.onmicrosoft.com

7.該当のユーザーが完全に削除されたのを確認します。

Get-SPOUser -Site https://テナント名.sharepoint.com/sites/xxxxxxx | FT –a

* -Siteの後ろに対象のサイトコレクションのURLを入力します。

②Azure Active Directoryのアカウントを削除

1.以下のコマンドを実行し、テナント管理者のアカウントにてAzure Active Directoryに連結します。

Connect-MSOLService

2.SPOで削除されたユーザーをゲットします。

Get-MsolUser -ReturnDeletedUsers -UnlicensedUsersOnly | ft -a

3.以下のコマンドを実行した後、「Y」を入力し、ADから該当のユーザーを削除します。

Remove-MsolUser -RemoveFromRecycleBin -UserPrincipalName <該当のユーザーのメールアドレス>
例)Remove-MsolUser -RemoveFromRecycleBin -UserPrincipalName user@account.co.jp

4.以下のコマンドを実行し、ADに該当のユーザーが残っているか確認します。

Get-MsolUser -ReturnDeletedUsers -UnlicensedUsersOnly | ft -a

以上となります!

弊社のSSSのサービスをご利用いただければ!全力で御社の力になれますよう頑張りますので、
ソノリテのSSSのご契約ぜひ!ご検討お願いします!

サイトコレクション単位でリスト・ライブラリをクラシックUIに切り替える

SharePoint Onlineのリスト・ライブラリの表示方法には、
「クラシック表示(クラシックUI)」と「新しい表示(モダンUI)」の2種類があります。

この表示は、ページ左下のリンクをクリックすることで切り替えが可能です。

【現在クラシックUIの場合】
「クラシック表示を終了」をクリック

【現在モダンUIの場合】
「従来のSharePoint表示に戻す」をクリック

さて、上記の様にページの左下より切り替え可能ですが、
デフォルトの表示設定を行うことで、より効率的に運用することが可能です。

デフォルトの表示は、以下の単位で設定可能です。

・テナント全体
・リスト(ライブラリ単位)
・サイトコレクション単位

今回はこの内の、
「サイトコレクション単位での設定方法」についてご紹介いたします。

サイトコレクション単位で設定を行う場合、
PowerShellのスクリプトを利用した設定を行う必要がございます。
スクリプトをご紹介しますので、もしよろしければご検討ください。

※今回のスクリプトの実行にはPnP PowerShellがインストールされている必要がございます。

 メインOSがWindows 10の場合、またはPowerShellGetがインストールされている場合は、
 PowerShellを管理者実行し、以下のコマンドを実行することでPnP PowerShellのインストールが可能です。

Install-Module SharePointPnPPowerShellOnline

【サイトコレクション単位でクラシックUIに設定する】

# Connect to a site
$cred = Get-Credential
Connect-PnPOnline -Url https://[tenant].sharepoint.com/sites/siteurl -Credentials $cred
# Opt out from modern lists and libraries at site collection level
Enable-PnPFeature -Identity E3540C7D-6BEA-403C-A224-1A12EAFEE4C4 -Scope Site

また、モダンUIに変更する場合は以下のスクリプトを実行します。

【サイトコレクション単位でモダンUIに設定】

# Connect to a site
$cred = Get-Credential
Connect-PnPOnline -Url https://[tenant].sharepoint.com/sites/siteurl -Credentials $cred
# And again enable modern lists and libraries at site collection level
Disable-PnPFeature -Identity E3540C7D-6BEA-403C-A224-1A12EAFEE4C4 -Scope Site

【参考URL】
モダン リストとライブラリのエクスペリエンスをオプト アウトする
https://docs.microsoft.com/ja-jp/sharepoint/dev/transform/modernize-userinterface-lists-and-libraries-optout

今回の記事の様に、
株式会社ソノリテのSSSではSharePointの「活用支援」を行っております。
もしご興味がおありでしたら、こちらよりご検討よろしくお願いします。