Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Powershell : Lister les membres externes des sites Sharepoint

Dans certain cas de figure nous sommes amenés à devoir faire une liste de tout accès externe à différents types de ressources, dans le cas présent nous allons lister l’ensemble des sites Sharepoint avec un partage externe, pour ce faire vous aurez besoin de :

  • Powershell 5.1,
  • Le module Sharepoint Online,
  • un accès Sharepoint Admin.

Vous pouvez maintenant lancer le script en prenant soin de modifier les url et identifiants (L2, L21, L74 et L88).

# Connection to Sharepoint Online
Connect-SPOService -Url https://contoso-admin.sharepoint.com # (Please change the connection URL)

# Define variables
$ArraySP = @()
$i = 0
$x = 0

# Get the list of All 
$AllSPSite = Get-SPOSite -Limit All
$AllSPSite = $AllSPSite | sort Url

$AllSPSite | foreach {
    $I++
    $Url = $_.Url
    $Owner = $_.Owner
    $Title = $_.title

    # If you are not in the Admin Group you will need to Grant your account as Admin
    Try {
        Set-SPOUser -Site $Url -LoginName "mathieu@contoso.com" -IsSiteCollectionAdmin:$true -ErrorAction Stop
        $Result = $true
        }
    Catch {
        Write-Warning $($_)
        Write-Output $Url | Add-Content C:\temp\SPError.txt
        $Result = $false
        }

    # If you're Admin you can check
    If ($Result -eq $true) {
        # Check Guest Access
        Try {
            # Get Members
            $Members = Get-SPOUser -Site $Url -Limit All -ErrorAction stop
            $External = $Members.where({$_.Usertype -eq "Guest"})

            If ($External.count -ne 0) {
                Write-Host "External found on $Title" -ForegroundColor Cyan
                $External.count
                $External | ForEach {
                    $DisplayName = $_.DisplayName
                    $LoginName = $_.LoginName
                    $Groups = $_.Groups

                    # Store Data
                    $ArraySP += New-Object psobject -Property @{
                        Url = $Url
                        Owner = $Owner
                        Title = $title
                        DisplayName = $DisplayName
                        LoginName = $LoginName
                        Groups = $Groups
                        }
                    # Release
                    $DisplayName = $null
                    $LoginName = $null
                    $Groups = $null
                    }
                }
            # Release
            $Members = $null
            $External = $null
            }
        Catch {
            Write-Warning $($_)
            Write-Host "$Title not Accessible" -ForegroundColor Yellow
            Write-Host "$Url not Accessible" -ForegroundColor Magenta
            Write-Output $Url | Add-Content C:\temp\SPError.txt
            }
        
        # Remove Admin Rights
        Try {
            Set-SPOUser -Site $Url -LoginName "mathieu@contoso.com" -IsSiteCollectionAdmin:$false
            }
        Catch {
            Write-Warning $($_)
            Write-Output $Url | Add-Content C:\temp\SPError.txt
            }
        }
    
    # Release
    $Url = $null
    $Owner = $null
   
    # After 200 connection, reconnect to Sharepoint
    If ($x -eq 200) {
        Connect-SPOService -Url https://contoso-admin.sharepoint.com # (Please change the connection URL)
        $x = 0
        }
    $x++
    }

$ArraySP | Export-Csv c:\temp\ExternalSharepointMembers.csv -Encoding UTF8 -Delimiter ";" -NoTypeInformation

 

Exchange Onprem_Déterminer le nombre d’utilisateurs utilisant réellement POP et IMAP

 

Contexte

Il existe de nombreuses boîtes aux lettres dans Exchange onpremise pour lesquelles IMAP et POP sont activés, mais est ce que réellement ces protocoles sont utilisés pour se connecter à Exchange ou pas ?

Démarche

Récupérons tout d’abord les utilisateurs pour lesquels IMAP et POP sont activés dans l’environnement Exchange Onpremise, puis comparons-les aux journaux IMAP et POP.

  1. Télécharger l’outil Log Parser Download Log Parser 2.2 from Official Microsoft Download Center puis installer-le au niveau du poste depuis lequel l’analyse sera effectuée.
  2. Filtrer les utilisateurs avec IMAP et POP activés en exéxutant tout d’abord les commandes suivantes au niveau de l’interface Exchange Powershell :

    $ImapEnabled = Get-CASMailbox -Filter {Imapenabled -eq $true} -ResultSize unlimited

    $PopEnabled = Get-CASMailbox -Filter {Popenabled -eq $true} -ResultSize unlimited

  3. Analyser les journaux IMAP et POP pour voir quels comptes se connectent réellement à ces protocoles.

  4. Examiner et comparer les deux ensembles de données :

Utiliser Excel ou des commandes similaires à celles ci-dessous :

Compare-Object $ImapLogs $($ImapEnabled.name) | Where sideindicator -eq “<=”

Compare-Object $POPLogs $($POPEnabled.name) | Where sideindicator -eq “<=”

 

Les utilisateurs qui utilisent activement IMAP et POP sont stockés respectivement dans les $IMAPLogs et $POPLogs. Tous les autres trouvés dans $IMAPEnabled et $POPEnabled et qui ne sont pas dans $IMAPLogs et $POPLogs pourraient avoir les protocoles potentiellement désactivés. 

 

Exchange_Erreur de suppression de l’abonnement Edge 2010 dans une infrastructure Exchange 2013

Description du problème

Lorsqu’il s’agit de supprimer l’abonnement Edge 2010 dans une organisation contenant des serveurs Exchange 2013, le message d’erreur ci-dessous apparaît suite à l’exécution de la commande Remove-EdgeSubscription servername, 

Remove-EdgeSubscription : Impossible d’effectuer cette modification car la propriété ExchangeVersion de l’objet est 0.20 (15.0.0.0), ce qui n’est pas pris en charge par la version actuelle 0.1 (8.0.535.0). Vous aurez besoin d’une version plus récente d’Exchange pour effectuer cette modification. Nom de la propriété : ExchangeVersion
At line:1 char:24 + Remove-EdgeSubscription <<<< edge2 -Verbose
+ CategoryInfo : NotSpecified: (0:Int32) [Remove-EdgeSubscription], DataValidationException
+ FullyQualifiedErrorId : D8A49A14,Microsoft.Exchange.Management.SystemConfigurationTasks.RemoveEdgeSubscription

 

Explication et Résolution

La commande Remove-EdgeSubscription supprime à la fois l’abonnement et tous les objets abonnés de la base de données ADAM locale sur le serveur Edge. Mais si l’un de ces objets abonnés a été créé sur Exchange 2013 après son installation, ils auront une version ExchangeVersion égale à 0.20 (15.0.0.0) et Exchange 2010 SP3 ne peut pas traiter cet objet d’ou le message d’erreur dessus.

 

Pour résoudre ce problème, via ADSIEDIT, recherchez et supprimez manuellement l’objet avec une version Exchange 0.20 (15.0.0.0) de la base de données AD LDS, puis réexécutez la cmdlet Remove-EdgeSubscription, cela devrait maintenant fonctionner (sauf si vous avez deux objets ou plus avec le numéro de version le plus élevé à chercher et à supprimer).

  1. Pour rechercher des objets avec une version ExchangeVersion supérieure à « 0.1 (8.0.535.0) », correspondante à la version qu’Exchange 2010, ouvrez ADSIEdit sur le serveur Edge.

2. Cliquez avec le bouton droit sur le nœud ADSI Edit en haut de la fenêtre et choisissez Connect to…

3. Dans la boîte de dialogue Paramètres de connexion (illustrée ci-dessus), définissez le champ Sélectionner un contexte d’appellation connu sur Configuration . Tapez le nom du serveur local et le port AD LDS dans le champ Sélectionner ou taper un domaine ou un serveur. La valeur « server:port » doit être EDGESERVERNAME:50389

5. Développez l’arborescence jusqu’à ce que vous atteigniez CN=First organisation,CN=Microsoft Exchange,CN=Services,CN=Configuration,CN={……………….}

6. Vous devez maintenant examiner chaque objet dont la valeur msExchVersion n’est pas 4535486012416. Par exemple, si vous aviez créé un domaine accepté en raison de la fédération dans Exchange 2013, il s’agirait d’un nouvel objet depuis 2010. Cet objet (sous CN=Accepted Domains,CN=Transport Setting,…) a la valeur 88218628259840. 

  • Pour vérifier qu’il s’agit de l’objet correct à supprimer manuellement, entrez Get-Object |FT name,ExchangeVersion à partir de l’environnement de ligne de commande Exchange Management Shell sur le serveur Edge où Object est la cmdlet que vous cherchez à interroger – dans le présent cas, ce serait Get-AcceptedDomain. Cet objet a une version ExchangeVersion plus récente et c’est donc (au moins) cet objet empêche la suppression de l’abonnement Exchange.
  • Supprimez manuellement l’objet dans ADSI Edit (vous pouvez le faire en toute sécurité, car il sera resynchronisé à partir de l’organisation Exchange si vous recréez l’abonnement Edge ultérieurement). Ne le supprimez pas d’Active Directory avec ADSI Edit, mais uniquement d’AD LDS. Veillez à ne supprimer que cet objet et non l’objet parent.

7. Une fois cet objet est supprimé, réessayez Remove-EdgeSubscription servername. S’il s’agit du seul objet, l’abonnement Edge sera supprimé du serveur Edge.