Partager via


SQL Server: Modifier le Mot de Passe d'un Login en Utilisant PowerShell (fr-FR)

Note : Cet article est une traduction.

Voici un court article détaillant un script PowerShell qui peut être utilisé pour modifier le mot de passe d'un login SQL Server.

Les lecteurs réguliers savent que je (John Sansom) pratique la philosophie de Tout Automatiser et les tâches administratives des DBA administrative n'échappent pas à la règle. Je ne veux pas à avoir à faire 2 fois la même tâche à la main.

Un besoin est arrivé récemment pour lequel j'avais besoin de modifier plusieurs Logins SQL Server Logins sur de multiples instances SQL Server. C'est précisément le genre de travail excitant pour lequel PowerShell peut être utilisé.

Vous trouverez ci-dessous un script utilisable pour accomplir cette tâche. Il prend une liste de noms de serveurs/instances sous forme de fichier texte, et ensuite vous saisissez comme paramètres en ligne de commande le nom et le mot de passe du Login SQL. Vous ne voulez pas stocker ce genre de choses dans un fichier texte !

# Date:         11/01/14
# Author:       John Sansom
# Description:  PS script to change a SQL Login password for a provided server list.
#           The script accepts an input file of server names.
# Version:  1.0
#
# Example Execution: .\Change_SQLLoginPassword.ps1 .\ServerNameList.txt SQLLogin Password
 
param([String]$serverListPath, [String]$login, [String]$password)
 
#Load the input file into an Object array
$ServerNameList = get-content -path $serverListPath
 
#Load the SQL Server SMO Assemly
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null
 
#Create a new SqlConnection object
$objSQLConnection = New-Object System.Data.SqlClient.SqlConnection
 
#For each server in the array do the following..
foreach($ServerName in  $ServerNameList)
{
    Try
    {
        $objSQLConnection.ConnectionString = "Server=$ServerName;Integrated Security=SSPI;"
            Write-Host "Trying to connect to SQL Server instance on $ServerName..." -NoNewline
            $objSQLConnection.Open() | Out-Null
            Write-Host "Success."
        $objSQLConnection.Close()
    }
    Catch
    {
        Write-Host -BackgroundColor Red -ForegroundColor White "Fail"
        $errText =  $Error[0].ToString()
            if ($errText.Contains("network-related"))
        {Write-Host "Connection Error. Check server name, port, firewall."}
 
        Write-Host $errText
        continue
    }
 
    #Create a new SMO instance for this $ServerName
    $srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $ServerName
 
    #Find the SQL Server Login and Change the Password
    $SQLUser = $srv.Logins | ? {$_.Name -eq "$login"};
    $SQLUser.ChangePassword($password);
    $SQLUser.PasswordPolicyEnforced = 1;
    $SQLUser.Alter();
    $SQLUser.Refresh();
    Write-Host "Password for Login:'$login' changed sucessfully on server:'$ServerName' "
}

Autres langues

Cet article est également disponible dans les langues suivantes :