2024年4月19日 星期五

Pnp.PowerShell 如何安裝 與 基本用法

Pnp.PowerShell 如何安裝 與 基本用法

經常要測試,每次都從頭來有點煩了把常見的語法整合起來



安裝

安裝有分好幾個版本,比較要注意的是從2版開始必須要 pwsh7 才能動,環境不允許的話只能裝舊版的。

各版本可以從這裡點出來
powershell/README.md at dev · pnp/powershell · GitHub


夜間最新版

Install-Module -Name PnP.PowerShell -AllowPrerelease

最新穩定版 (PowerShell Gallery | PnP.PowerShell)

Install-Module -Name PnP.PowerShell -RequiredVersion 2.12.0

舊版 (PowerShell Gallery | PnP.PowerShell 1.12.0)

Install-Module PnP.PowerShell -RequiredVersion 1.12.0 -Force


安裝好之後可以通過這個代碼檢查

Get-Module -ListAvailable PnP.PowerShell


其他選項

解除安裝可以通過這個代碼

UnInstall-Module -ListAvailable PnP.PowerShell

如果無法移除手動從這個資料夾 C:\Program Files\WindowsPowerShell\Modules 中移除即可


使用 -Scope CurrentUser 可以安裝到當前使用者文件

Install-Module PnP.PowerShell -Scope CurrentUser -Force


由於 PowerShell 與 Pwsh 會共用 C:\Program Files\WindowsPowerShell\Modules 中的文件,如果要分開 5 與 7 使用不同的版本,必須個別安裝到使用者文件底下。

PowwerShell: ~\使用者文件\WindowsPowerShell\Modules\
Pwsh: ~\使用者文件\PowerShell\Modules\



基於版本問題,建議在代碼中把這段放進去開頭,可以少走不少彎路

function GetDateString { $((Get-Date).Tostring("yyyy/MM/dd HH:mm:ss.fff")) }
$Module = (Get-Module -ListAvailable PnP.PowerShell)[0]
if (!$Module) { Write-Error "The module 'PnP.PowerShell' is not installed." -EA 1 }
$ver = "PowerShellVersion $($PSVersionTable.PSVersion), PnP.PowerShellVersion $($Module.Version)"
Write-Host "[$(GetDateString)] $ver" -ForegroundColor DarkGray

其中 Get-Module 有使用 [0] 取第一個,是因為有可能同時存在多個版本



登入

登入有好幾種方法,先介紹文字介面的

$SiteUrl = "https://chg.sharepoint.com/sites/Maple"
$User    = "UserName@chg.onmicrosoft.com"
$PWord   = "PassWord"
$PWord = $PWord | ConvertTo-SecureString -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
Connect-PnPOnline -Url $SiteUrl -Credentials $Credential

對於如何合理的儲存登入情報,可以參考這個專案https://github.com/hunandy14/ConvertFrom-Env 



這樣就登入了,再來可以用這個測試現在登入哪個網站

# 目前登入的用戶
(Get-PnPConnection).PSCredential

# 目前登入的網站
Get-PnPWeb


第二種方式是通過UI介面來登入

.Net登入窗口

$SiteUrl = "https://chg.sharepoint.com/sites/Maple"
Connect-PnPOnline -Url $SiteUrl -Interactive

外部瀏覽器登入窗口

$SiteUrl = "https://chg.sharepoint.com/sites/Maple"
Connect-PnPOnline -Url $SiteUrl -UseWebLogin




上傳檔案

這邊要注意一點是斜線的方向,一開始不知道弄了好一會兒。


先用預設的資料夾測試,這個是創建SharePoint時預設會建立的文件庫。

# 獲取預設資料夾
Get-PnPFolder -Url "/Shared Documents"

# 獲取預設資料夾中的子資料夾
Get-PnPFolder -Url "/Shared Documents/File"


創建資料夾

try { # 檢查資料夾是否存在
    Get-PnPFolder -Url "/Shared Documents/File" -ErrorAction Stop
} catch { # 如果資料夾不存在,則建立它
    Add-PnPFolder -Name "File" -Folder "Shared Documents"
}


上傳文件

Add-PnPFile -Path ".\README.md" -Folder "Shared Documents/File"


查看文件

Get-PnPFile -Url "Shared Documents/File/README.md"



沒有留言:

張貼留言