Weboldal keresés

SharePoint Online: A könyvtárban lévő összes fájl közzététele a PowerShell segítségével


Követelmény: Több fájl tömeges közzététele a SharePoint Online-ban.

Hogyan lehet több fájlt közzétenni a SharePoint Online-ban?

Az összes dokumentum SharePoint Online szolgáltatásban való közzétételéhez kövesse az alábbi lépéseket:

  1. Nyissa meg a SharePoint dokumentumtárat, ahol a dokumentumokat tárolja.
  2. Válassza ki a közzétenni kívánt dokumentumokat az egyes dokumentumok melletti jelölőnégyzetek bejelölésével. Nézetet úgy is létrehozhat, hogy beállítja a Szűrőt: A jóváhagyási állapot egyenlő a piszkozattal, és beállíthatja, hogy a nézet az összes fájlt mappák nélkül jelenítse meg.
  3. A parancssorban válassza a „Bejelentkezés” lehetőséget.
  4. Megjelenik egy felugró ablak, amely lehetővé teszi a bejelentkezést egy megjegyzéssel, amely elmagyarázza a dokumentumokon végzett módosításokat.
  5. Válassza a „Fő verzió (Közzététel)” lehetőséget az összes kiválasztott fájl közzétételéhez és mások számára elérhetővé tételéhez.

A PowerShell a könyvtárban lévő összes fájl bejelentkezéséhez, jóváhagyásához és közzétételéhez

Ha bekapcsolja a kisebb verziók használatát a SharePoint Online dokumentumtárban, a szerkesztések nem jelennek meg a csak olvasási (vagy csak megtekintési) engedéllyel rendelkező felhasználók számára, amíg közzé nem teszi őket. Az egyes fájlok egyenkénti közzététele nagy könyvtárakban határozottan körülményes, ezért itt van a PowerShell-szkriptem, amellyel egyszerre publikálhatom őket. Tegyük fel, hogy a SharePoint Online „Oldalak” könyvtárában lévő összes oldalt közzé szeretné tenni.


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Set Parameters
$SiteURL="https://Crescent.sharepoint.com"
$ListName ="Team Documents"

#Get Credentials to connect
$Cred= Get-Credential

Try{
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

    #Get All Items from the List
    $List = $Ctx.Web.Lists.GetByTitle($ListName)
    $ListItems = $List.GetItems([Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery()) 
    $Ctx.Load($List)
    $Ctx.Load($ListItems)
    $Ctx.ExecuteQuery()

    ForEach($ListItem in $ListItems)
    {
        #Approve the File if "Content Approval is Turned-ON"
        If ($List.EnableModeration -eq $true)
        {
            If ($ListItem["_ModerationStatus"] -ne '0')
            { 
                $ListItem.File.Approve("Approved by Admin")
                Write-Host "File Approved: "$ListItem["FileLeafRef"] -ForegroundColor Yellow
                $Ctx.ExecuteQuery()
            }
        }

        #Checkin the File if its checked-out
        If ($ListItem["CheckoutUser"] -ne $null)
        {
            $ListItem.File.CheckIn("Check-in by Admin", [Microsoft.SharePoint.Client.CheckinType]::MajorCheckIn)
            Write-Host "File Checked in: "$ListItem["FileLeafRef"] -ForegroundColor Cyan
            $Ctx.ExecuteQuery()
        }

        #Publish the File
        If($List.EnableVersioning -and $List.EnableMinorVersions)
        {
            $ListItem.File.Publish("Published by Admin")
            $Ctx.ExecuteQuery()
            Write-Host -f Green "File published:" $ListItem["FileLeafRef"]
        }
    }
}
Catch {
Write-host -f Red "Error:" $_.Exception.Message
}
A „Tartalom és szerkezet” segítségével tömegesen is közzétehet dokumentumokat a SharePoint Online-ban!

A PnP PowerShell a dokumentumtárban lévő összes fájl közzétételéhez

A PnP PowerShell segítségével közzéteheti az összes dokumentumot a SharePoint Online dokumentumtárban. Az alábbi példa arra, hogyan teheti ezt meg:


#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/Retail"
$LibraryName= "Invoices"
  
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
 
#Get All Files from the Document Library
$List =  Get-PnPList -Identity $LibraryName
$ListItems = Get-PnPListItem -List $LibraryName -PageSize 2000 | Where { $_.FileSystemObjectType -eq "File" }

#Iterate through each file
ForEach ($Item in $ListItems)
{
    #Get the File from List Item
    $File = Get-PnPProperty -ClientObject $Item -Property File 

    #Approve the File if "Content Approval is Turned-ON"
    If ($List.EnableModeration -eq $true)
    {
        If ($Item["_ModerationStatus"] -ne '0')
        { 
            Set-PnPListItem -List $LibraryName -Identity $Item.ID -Values @{"_ModerationStatus"=0;"_ModerationComments"="Approved by Script"} | Out-Null            
            Write-host -f Green "Approved File:"$Item.FieldValues.FileRef
        }
    }

    #Check in the file, if its checked out
    If($File.CheckOutType -ne "None")
    {
        Set-PnPFileCheckedIn -Url $File.ServerRelativeUrl -CheckinType MajorCheckIn 
        Write-host -f Green "File Checked-In and Published:"$File.ServerRelativeUrl
    }
    Elseif($File.MinorVersion )# Check if file draft (Minor version)
    {
        $File.Publish("Major version Published by Script")
        $File.Update()
        Invoke-PnPQuery
        Write-host -f Green "Published File at '$($File.ServerRelativeUrl)'"
    }
}

BTW, az SPModerationStatusType felsorolásnak az alábbi értékei vannak:

  • Jóváhagyva - 0
  • Megtagadva -1
  • Függőben - 2
  • Tervezet - 3
  • Tervezett - 4

Kapcsolódó cikkek