vendredi 29 avril 2022

POWERSHELL - ordinateurs inactifs - Liste et suppression de l'active Directory et des enregistrements DNS

#Domaine de l'active directory qui sera parcouru

$Domaine=(Get-WmiObject Win32_ComputerSystem).Domain


#Nombre de jours d'inactivé servant pour la suppression des ordinateurs

$DaysInactive = 200


#Nom du Fichier de sortie pour la liste des ordinateurs Inactifs

$FicInactiveComputers = "c:\temp\$($CDate)_$($Domaine)_InactiveComputers.txt"


#Nom du Fichier de sortie pour les DNS invalides

$FicInvalidDNS = "c:\temp\$($CDate)_$($Domaine)_DnsRecord.txt"


#Date

$CDate = Get-Date -format "yyyyMMdd"


$time = (Get-Date).Adddays(-($DaysInactive))


$InactiveComputers = Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} -Properties Name, OperatingSystem, SamAccountName, DistinguishedName, LastLogonDate | Format-Table -Property Name,DistinguishedName, LastLogonDate 


#Liste des ordinateurs supprimés 


$InactiveComputers > $FicInactiveComputers


#Suppression des ordinateurs dans l'AD


Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} | Set-ADObject -ProtectedFromAccidentalDeletion:$false


Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} | Remove-ADObject -Recursive 


Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} | Remove-ADComputer 



$InactiveList = Get-Content $FicInactiveComputers


$dnsrecords = Get-DnsServerResourceRecord -ZoneName $Domaine




foreach($ligne in $InactiveList){


    $CarReference = $ligne.IndexOf(" ")

    


   if ($CarReference  -ne -1 ) {

        $Colonne = $ligne.substring(0,$CarReference)

    }



         


    $deadDC = $dnsrecords | Where-Object {$_.HostName -eq $colonne}

    


    #Suppression des entrées DNS


    Remove-DnsServerResourceRecord -ZoneName $Domaine -RRType "A" -name $colonne


    #Liste des entrées DNS supprimées


    $out=$deadDC | Out-File -FilePath $FicInvalidDNS -Append


      


}

mercredi 9 mars 2022

Office 365 - Exchange - comptes utilisateurs - lister les utilisateurs désactivés, qui ont une boite mail et qui ne sont pas encore cachés du carnet d'adresses

 Souvent nous avons besoin de garder des comptes utilisateurs sur l'active directory qui sont désactivés, alors que les boites aux lettres ne sont pas encore supprimées sur Exchange ou Office 365.

Ces comptes utilisateurs, si ils concernent des collaborateurs partis, il y a de fortes chances que l'on ne veut plus les voir apparaitre dans le carnet d'adresses Outlook des différents utilisateurs.

Voici une petite commande powershell qui va vous lister l'ensemble des comptes désactivés, ayant une boite mail et qui sont encore visibles dans les listes et carnets d'adresses :

Get-Mailbox | Where {$_.HiddenFromAddressListsEnabled -eq $False} | Get-User | Where-Object {$_.AccountDisabled -eq 'True'}

il faudra bien entendu au préalable se connecter à Office-Exchange 365 (voir les posts précédents) ainsi qu'être soit sur un contrôleur de domaine ou sur un poste qui a les modules de powershell active Directory installés...

lundi 21 février 2022

Office 365 & exchange Liste des boites mails triés par volumétrie

 1) Préalable pour se connecter à Exchange (Office 365)

Install-Module -Name ExchangeOnlineManagement

(si ce n'est pas déjà fait)

2) Se connecter à Exchange (Office 365)

Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -UserPrincipalName moncompteadmin@mondomaine.com


Liste des boites mails triés par volumétrie

Get-EXOMailbox -ResultSize Unlimited | Get-EXOMailboxStatistics | Select @{Label="Utilisateur"; Expression = {$_.DisplayName}}, @{name="TotalUtilise (MB)"; expression={[math]::Round(($_.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}}, @{name="NbElements"; expression={$_.ItemCount}} | Sort 'TotalUtilise (MB)'


Liste des 5 dossiers mails d'un utilisateur les plus volumineux :

 Get-MailboxFolderStatistics mailutilisateur@mondomaine.com | Select-Object FolderPath,@{Name="SubFoldersize";Expression={$r=$_.FolderAndSubfolderSize; [int] $a = ($r.Substring($r.IndexOf("(")+1,($r.Length - 2 - $r.IndexOf("("))) -replace " bytes","" -replace ",","") ; $a } } | Sort-Object SubFolderSize -Descending | Select-Object FolderPath,@{Name="Folder-and-Subfolder-Size";Expression={[String] $_.SubFolderSize + " MB"}} -First 5

Liste des "plans" selon les abonnements des boites aux lettres dans Office 365 :

Get-MailboxPlan -Identity ExchangeOnlineEnterprise | format-List 

ou

Get-MailboxPlan -Identity ExchangeOnlineEnterprise 

Définir une alerte de quota sur un des "plans" de boite aux lettres exchange

Set-MailboxPlan -Identity ExchangeOnlineEnterprise -IssueWarningQuota 30GB




jeudi 10 février 2022

WINDOWS - TUER UN PROCESSUS D'UN SERVICE QUI NE VEUT PAS S'ARRETER (ETAT ARRET DANS LA LISTE DES SERVICES)

 1) Ouvrir en tant qu'administrateur une fenêtre de commande (CMD)

2) Repérer le PID du service qui est en fonction

sc queryex [nom_du_service]

Repérer dans le résultat affiché la ligne du PID, et noter le numéro

3) Tuer le processus du service en question

taskkill /PID [PID du service] /f




vendredi 7 janvier 2022

CITRIX & VMWARE erreur Citrix : "Vérifier que les certificats appropriés sont installés sur le serveur VCenter et sur la même machine que toutes les instances du service Host."

 CITRIX & VMWARE erreur Citrix : "Vérifier que les certificats appropriés sont installés sur le serveur VCenter et sur la même machine que toutes les instances du service Host."

Citrix : Cannot Connect to the vCenter Server due to a Certificate Error


Liste des pistes et sources :

Error:"Cannot Connect to the vCenter Server due to a Certificate Error"
https://support.citrix.com/article/CTX138640

Delivery Controller cannot contact vCenter server after certificate update on vCenter
https://support.citrix.com/article/CTX224551

Cause :
Vous avez mis à jour le certificat de votre Vcenter et Citrix MCS n'est pas content car votre connecteur contient encore les informations (ThumbPrint) de l'ancien certificat

Solution la plus pratique :

- Sur un de vos Delivery Controler créez une nouvelle connexion et des ressources, identique à votre connexion initiale et approuvez le certificat





- en powershell
Charger les modules Citrix
> asnp citrix.* 

Pour avoir la liste des connexions existantes et repérer le bon nom de connexion à utiliser/modifier
Get-ChildItem XDHyp:\Connections | Select-object HypervisorConnectionName

Pour récupérer le Thumprint du nouveau certificat, copiez celui de la nouvelle connexion.
Vous aurez cette information en lançant cette commande :
Get-Item -LiteralPath XDHyp:\Connections\[Nom de Connexion]

puis sur chaque Delivery Controler en powershell, modifiez le thumprint du certificat de la connexion initiale :
> $cred = Get-Credential
> Set-Item -LiteralPath "XDHyp:\Connections\[Nom de connexion]" -username $cred.username -securepassword $cred.password -sslthumbprint "[ThumbPrint du nouveau Certificat]" -hypervisorAddress https://[Adresse du Vcenter]/sdk

Vous pouvez ensuite détruire la connexion que vous avez précédemment créé (celle qui est identique à l'initiale bien sûr et pas l'initiale...)

Annexes :

  • Si l'autorité de certification ne fait pas partie de domaine Active Directory, et/ou que vos Citrix Delivery Controlers ne sont pas enrôlés sur le domaine en question, il est fort possible que vous deviez également installer le certificat et l'autorité de certification sur les Delivery Controlers.

  • Si vous ne créez pas une nouvelle connexion, identique à la première vous avez des forts risques (comme moi) d'avoir cette erreur à l'execution de la commande powershell Set-Item...


Set-Item : Cannot connect to the VCenter server due to a certificate error. Make sure that the appropriate
certificates are installed on the VCenter server, and install the appropriate certificates on all machines that
contain instances of the Host service.
Au caractère Ligne:1 : 1
+ Set-Item -LiteralPath "XDHyp:\Connections\Vsphere Simplivity" -userna ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation : (:) [Set-Item], InvalidOperationException
    + FullyQualifiedErrorId : Citrix.XDPowerShell.HostStatus.VCenterConnectionSslFailure,Microsoft.PowerShell.Commands
   .SetItemCommand

Set-Item : Cannot connect to the VCenter server due to a certificate error. Make sure that the appropriate
certificates are installed on the VCenter server, and install the appropriate certificates on all machines that
contain instances of the Host service.
Au caractère Ligne:1 : 1
+ Set-Item -LiteralPath "XDHyp:\Connections\------------" -userna ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Set-Item], InvalidOperationException
    + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetItemCommand

  • Le Thumbrint du Certificat doit être en Majuscules (en minuscules cela ne fonctionne pas...)

  • Lister les informations d'une connexion et ses ressources :

    Get-Item -LiteralPath XDHyp:\Connections\"[Nom de la connexion]"