結論を先に書くと PowerShell で書くとこんな感じです
[System.Web.HttpUtility]::UrlDecode($EncodeURL) |
Web ブラウザーに表示されている URL をそのまま UrlDecode
に食わせると、デコードしてくれる素敵なメソッドです
(Windows PowerShell 5.x で使う場合は、事前に「Add-Type
-AssemblyName System.Web」する必要があります)
参考情報
HttpUtility.UrlDecode Method (System.Web) | Microsoft Learn
どうしてこんなことを調べたかというと、SharePoint でファイルを格納しているフォルダーを共有するために、パンくずで表現したいと思ったのですが、Web UI に表示されているパンくずはうまくコピペができないんですよね...
フォルダーを開いているときの URI を見ると、パーセントエンコーディングされているので、ひょっとしてフォルダー パスがそのまま表現されているのではないかと思い、URL を PowerShell でエンコードするスクリプトを書こうと思い立ちました
そもそも URL で使用できる文字は、RFC3986/STD66(Uniform Resource Identifiers (URI): Generic Syntax)で定義されており、アルファベットと数字と一部の記号しか使用できません
日本語とか、RFC3986 で許可されていない文字を表す場合は、同 RFC3986
でパーセントエンコーディングするように定められています
("%"が大量に含まれている時々見る URL)
パーセントエンコーディングは、対象の文字列を UTF-8 にして、1バイトずつ16進数の文字列にして % を付ける仕様です
例えば「村」をパーセントエンコーディングすると、こんな感じになります
村 = 0xE69D91 → E6 9D 91 → %E6%9D%91
UrlDecode を使って、デコードされた URL から必要部分を取り出して、多少加工すればパンくずに出来ました
メデタシメデタシ
Google Drive のパンくずも取れると完璧なのですが... どうやら無理っぽい orz
必要に迫られて実装したコードがあるので、興味があれば参考にしてください
■ 関数名
GetSharePointbreadcrumb
■ 動作確認環境
Windows PowerShell 5.1
PowerShell 7.4.5 (Windows)
たぶん Mac Linux でも動くはず
■ オプション
GetSharePointbreadcrumb の後に、ハイフンを入力して TAB を叩くと、オプションが補完されるのて、必要オプションを選択してください
GetSharePointbreadcrumb -[TAB]
-Debug
NG となって、うまくパンくずが取れない時は、Debug オプションを使うと、デコード済みの URL を表示します
内容をフィードバックしてもらえれば確認します
-VertionCheck
最新版のスクリプトがあるか確認します
最新版があれば、自動ダウンロード & 更新します
■ GitHub
以下リポジトリで公開しています
https://github.com/MuraAtVwnet/GetSharePointbreadcrumb
git@github.com:MuraAtVwnet/GetSharePointbreadcrumb.git
■ スクリプトインストール方法
以下を PowerShell プロンプトにコピペ
$ModuleName = "GetSharePointbreadcrumb" $GitHubName = "MuraAtVwnet" Invoke-WebRequest -Uri https://raw.githubusercontent.com/$GitHubName/$ModuleName/master/OnlineInstall.ps1 -OutFile ~/OnlineInstall.ps1 & ~/OnlineInstall.ps1 |
Copyright © MURA All rights reserved.