Introduction
Lorsque vous travaillez avec PowerShell, vous avez probablement rencontré des situations où vous devez répéter plusieurs fois les mêmes valeurs pour différents paramètres de cmdlets. Bien que vous puissiez définir des valeurs par défaut dans vos propres fonctions, cela peut devenir complexe lorsque vous travaillez avec des cmdlets d’autres modules, comme ceux d’Active Directory. Heureusement, il existe une solution élégante : la variable $PSDefaultParameterValues
.
$PSDefaultParameterValues
$PSDefaultParameterValues
est une fonctionnalité puissante de PowerShell qui permet de définir des valeurs par défaut pour les paramètres de cmdlet. Cela signifie que vous pouvez configurer des valeurs que vous souhaitez utiliser automatiquement pour certains paramètres, vous évitant ainsi de les spécifier à chaque fois que vous utilisez le cmdlet correspondant.
Prenons l’exemple des cmdlets d’Active Directory. Supposons que vous souhaitiez spécifier un serveur par défaut pour une cmdlet (ou toutes les cmdlets) Active Directory que vous exécutez. Plutôt que de spécifier manuellement le serveur à chaque fois, vous pouvez utiliser $PSDefaultParameterValues
pour le faire automatiquement.
Cette astuce se révèle encore plus pertinente lorsque vous exécutez les cmdlets Active Directory depuis un poste Entra ID Joined. En effet, ce type de poste n’ayant pas accès à l’Active Directory on-premise, vous seriez autrement contraint de spécifier à chaque fois une valeur pour le serveur, à moins d’utiliser $PSDefaultParameterValues
.
Exemple pour la cmdlet Get-ADUser
# Import the Active Directory module to get the cmdlets
Import-Module ActiveDirectory
# Set the default value for the Server parameter of the Get-ADUser cmdlet
$PSDefaultParameterValues.Add("Get-ADUser:Server", "server.dudefromit.com")
Exemple pour toutes les cmdlets du module ActiveDirectory
# Import the Active Directory module to get the cmdlets
Import-Module ActiveDirectory
# Setting the default server for Active Directory cmdlets
Get-Command -Module ActiveDirectory -ParameterName Server | ForEach-Object {
# Skip the Sync-ADObject cmdlet error
if ($_.Name -ne 'Sync-ADObject') {
$PSDefaultParameterValues.Add($_.Name + ':' + $_.Parameters['Server'].Name, 'server.dudefromit.com')
}
}
Cette approche simplifie considérablement votre workflow, en vous permettant de concentrer votre attention sur les tâches réelles plutôt que sur les détails de la syntaxe.
Personnalisation supplémentaire
En plus de configurer des valeurs par défaut pour les modules PowerShell externes, vous pouvez également personnaliser le comportement de cmdlets intégrés. Par exemple, vous pouvez spécifier le délimiteur et l’encodage par défaut lors de l’exportation vers un fichier CSV :
# Setting the default values for the Export-CSV cmdlet
$PSDefaultParameterValues.Add('Export-CSV:Delimiter', ';')
$PSDefaultParameterValues.Add('Export-CSV:Encoding', 'utf8BOM')
$PSDefaultParameterValues.Add('Export-CSV:NoTypeInformation', $true)
Cela garantit que vos fichiers CSV sont toujours formatés selon vos préférences, sans avoir à spécifier ces paramètres à chaque exportation.
Profil PowerShell
Pour rendre cette configuration permanente et la charger automatiquement à chaque lancement du terminal PowerShell, vous pouvez ajouter ces lignes dans votre profil PowerShell. Cela vous permettra de bénéficier de ces valeurs par défaut chaque fois que vous utilisez PowerShell, améliorant ainsi votre efficacité et votre productivité.
Dans votre terminal PowerShell :
- Exécutez la commande :
notepad $PROFILE
- Ajoutez les lignes ci-dessous
- Sauvegardez le fichier
# Clear the default parameter values
$PSDefaultParameterValues.Clear()
# Import the Active Directory module to get the cmdlets
Import-Module ActiveDirectory
# Setting the default server for Active Directory cmdlets
Get-Command -Module ActiveDirectory -ParameterName Server | ForEach-Object {
# Skip the Sync-ADObject cmdlet error
if ($_.Name -ne 'Sync-ADObject') {
$PSDefaultParameterValues.Add($_.Name + ':' + $_.Parameters['Server'].Name, 'server.dudefromit.com')
}
}
# Setting the default values for the Export-CSV cmdlet
$PSDefaultParameterValues.Add('Export-CSV:Delimiter', ';')
$PSDefaultParameterValues.Add('Export-CSV:Encoding', 'utf8BOM')
$PSDefaultParameterValues.Add('Export-CSV:NoTypeInformation', $true)
Conclusion
En utilisant $PSDefaultParameterValues
, vous pouvez simplifier votre travail avec PowerShell en définissant des valeurs par défaut pour les paramètres de cmdlet. Que ce soit pour les modules externes comme Active Directory ou pour les cmdlets intégrés, cette fonctionnalité vous permet de personnaliser votre environnement de développement selon vos besoins spécifiques, vous faisant gagner du temps et de l’efficacité. Profitez de cette puissante fonctionnalité pour améliorer votre flux de travail PowerShell dès aujourd’hui !