Pnp.PowerShell 新式登入方法 如何使用委任權限登入
參考這兩篇文章的提示想通了
- PnP PowerShell を利用するための Microsoft Entra ID アプリケーションを登録する方法 (zenn.dev)
- 使用 PnP PowerShell 連接到 SharePoint Online - SharePoint 日記 (sharepointdiary.com)
簡單來說 2024-09-09 當天的改動是移除掉一個預設應用程式,該應用程式的ID是 31359c7f-bd7e-475c-86db-fdb8c937548e
報錯的信息是
AADSTS700016: Application with identifier ‘31359c7f-bd7e-475c-86db-fdb8c937548e’ was not found in the directory ‘<テナント名>’.
(‘31359c7f-bd7e-475c-86db-fdb8c937548e’は、PnP Managment Shell アプリケーションの共通の ID)
這應用程式是你不用自己新增也會自己有的,並且 PnP.PowerShell 預設會去叫這組應用程式來執行委任權限
委任權限的執行方法是需要過一組使用者帳號的
Connect-PnPOnline -Url $siteUrl -Credentials (Get-Credential)
如何呼叫別組應用程式,可以從環境變數中設定
$env:ENTRAID_APP_ID = $cliendId
也就是真正需要的只有
- 重建自己的應用程式
- 設置適當的委任權限
- 增加環境變數 ENTRAID_APP_ID = ClientID
如此一來對於沒有MFA認證的帳號,就一樣可以回復到原本的純帳密登入了。
開始之前記得先更新一下 PnP.PowerShell 夜間最新版,最近頻率很常估計bug很多。
# 移除所有版本
Uninstall-Module PnP.PowerShell -AllVersions -Force
# 安裝最新夜間版本
Install-Module -Name PnP.PowerShell -AllowPrerelease -Force
# 版本確認
Get-Module -ListAvailable PnP.PowerShell
* PnP.PowerShell要大於 2.12 版本才能作用,在此之前版本無法更改 ENTRAID_APP_ID 是無法登入的。
應用程式權限
對於權限先給一個通用權限,這個權限就足夠上傳檔案了。
測試委任權限先設置 AllSites.Manage
就足夠了,記得右邊要綠色打勾才會起作用。
即使上面寫不用管理權限也必須用管理員承認一次才能起作用,詳細原因我也不清楚。
你可以隨意丟一個文件上去試試看,能過就行了其他再自己摸索需要哪些權限
Add-PnPFile -Path "README.md" -Folder "Shared Documents"
完整的無應答登入代碼
注意使用純帳密登入必須移除MFA多重驗證 (或是有調過Policy安全政策)
# 設置登入信息
$cliendId = "Your-Client-ID"
$siteUrl = "https://[TelentName].sharepoint.com/sites/[SiteName]"
$username = "[UserName]@[TelentName].onmicrosoft.com"
$password = "UserPassWord"
$credentials = New-Object System.Management.Automation.PSCredential($username, (ConvertTo-SecureString $password -AsPlainText -Force))
# 登入 SharePoint
$env:ENTRAID_APP_ID = $cliendId
Connect-PnPOnline -Url $siteUrl -Credentials $credentials
# 獲取網站文件目錄
Get-PnPFolder -Url "/Shared Documents"
* 記得確保 powershell 版本要大於7版, pnp.powershell 要大於 2.12 版本
沒有留言:
張貼留言