Búsqueda de sitios web

SharePoint Online: comprobar si existe una carpeta mediante PowerShell


Requisito: Compruebe si existe una carpeta en la biblioteca de documentos de SharePoint Online.

SharePoint Online: PowerShell para comprobar si existe una carpeta

Al trabajar con scripts de PowerShell de SharePoint Online, es posible que deba determinar si existe una carpeta en SharePoint Online antes de crear una nueva carpeta o eliminar una carpeta existente. En esta publicación de blog, le mostraremos cómo usar PowerShell para verificar rápidamente si existe una carpeta en SharePoint Online.

Aquí está PowerShell para SharePoint Online para verificar si existe una carpeta:


#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"

#Function to check if folder Exists
Function Check-SPOFolderExists()
{
  param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $FolderRelativeURL
    )
    Try {
        #Get Credentials to connect
        $Cred= Get-Credential
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Credentials

        #Get the Web
        $Web = $Ctx.Web
        $Ctx.Load($Web)
        $Ctx.ExecuteQuery()

        #Check Folder Exists
        Try { 
            $Folder = $Web.GetFolderByServerRelativeUrl($FolderRelativeURL)
            $Ctx.Load($Folder)
            $Ctx.ExecuteQuery() 

            Write-host -f Green "Folder Exists!"
        }
        Catch {
            Write-host -f Yellow "Folder Doesn't Exist!"
        }        
    }
    Catch {
        write-host -f Red "Error Checking Folder Exists!" $_.Exception.Message
    }
}
 
#Set parameter values
$SiteURL="https://crescent.sharepoint.com/"
$FolderRelativeURL="/Shared Documents/2018"

#Call the function 
Check-SPOFolderExists -SiteURL $SiteURL -FolderRelativeURL $FolderRelativeURL 

Alternativamente, puede usar el otro método usado en mi otro artículo: SharePoint Online: crear una carpeta usando PowerShell

PnP PowerShell para comprobar si existe una carpeta en SharePoint Online

La forma PnP PowerShell de verificar si una carpeta existe o no en la ubicación dada va aquí:


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Operations"
$FolderURL = "/sites/Operations/Shared Documents/Classifieds" #Server Relative URL

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Try to Get the Folder 
$Folder = Get-PnPFolder -Url $FolderURL -ErrorAction SilentlyContinue

#sharepoint online powershell To check if folder exists
If($Folder -ne $null)
{
    Write-Host -f Green "Folder exists!"
}
Else
{
    Write-Host -f Yellow "Folder does not exists!"
}

Muy bien, los dos scripts anteriores verifican si la carpeta dada existe en la URL especificada. ¿Qué tal comprobar si una carpeta tiene una subcarpeta específica en SharePoint Online?


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Operations"
$ParentFolderURL = "/Shared Documents" #Site Relative URL
$FolderName = "Classified"

Try{
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Interactive

    #Try to Get the Folder from given parent folder
    $Folder = Get-PnPFolderItem -FolderSiteRelativeUrl $ParentFolderURL -ItemType Folder -ItemName $FolderName

    #Powershell To check if folder exists
    If($Folder -ne $null)
    {
        Write-Host -f Green "Folder exists!"
    }
    Else
    {
        Write-Host -f Yellow "Folder does not exists!"
    }
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

¿Cómo comprobar si una biblioteca de documentos tiene una carpeta específica o no usa PowerShell?

El siguiente script comprueba si la biblioteca de documentos dada tiene una carpeta específica (en su nivel raíz).


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Operations"
$LibraryName = "Documents"
$FolderName = "Classified"

Try{
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Interactive

    #Try to Get the Folder from document library
    $Folder = Get-PnPFolder -List $ListName | Select -ExpandProperty Name | Where {$_.Name -eq $FolderName}

    # check if folder exists in the document library - ONLY AT ROOT LEVEL
    If($Folder -ne $null)
    {
        Write-Host -f Green "Folder exists!"
    }
    Else
    {
        Write-Host -f Yellow "Folder does not exists!"
    }
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

Este artículo muestra que podemos usar PowerShell para determinar si existe una carpeta en SharePoint Online. Con estos pasos, puede verificar fácilmente si una carpeta ya existe en una biblioteca o lista de documentos antes de crearla o verificar que se haya eliminado una carpeta específica.

¿Qué sucede si desea crear una nueva carpeta si no existe? Para crear una carpeta en SharePoint Online usando PowerShell, consulte: ¿Cómo crear una nueva carpeta en SharePoint Online con PowerShell?

Artículos relacionados