Gérer l’authentification dans le moteur de base de données PowerShell
Par défaut, les composants de SQL Server PowerShell utilisent l’authentification Windows lors de la connexion à une instance du moteur de base de données. Vous pouvez utiliser l'authentification SQL Server en définissant un lecteur virtuel PowerShell ou en spécifiant les paramètres -Username
et -Password
pour Invoke-Sqlcmd
.
Avant de commencer : Autorisations
Pour définir l’authentification, using : A Virtual Drive, Invoke-Sqlcmd
autorisations
Toutes les actions que vous pouvez effectuer dans une instance du moteur de base de données sont contrôlées par les autorisations accordées aux informations d'identification utilisées pour la connexion à l'instance. Par défaut, le fournisseur et les applets de commande SQL Server utilisent le compte Windows sous lequel ils s'exécutent pour établir une connexion via l'authentification Windows au moteur de base de données.
Pour établir une connexion via l'authentification SQL Server, vous devez fournir un ID de connexion et un mot de passe d'authentification SQL Server. Lorsque vous utilisez le fournisseur SQL Server, vous devez associer les informations d’identification de connexion SQL Server à un lecteur virtuel, puis utiliser la commande modifier le répertoire (cd
) pour vous connecter à ce lecteur. Dans Windows PowerShell, les informations d'identification de sécurité peuvent être associées uniquement à des lecteurs virtuels.
Authentification SQL Server avec un lecteur virtuel
Pour créer un lecteur virtuel associé à une connexion via l'authentification SQL Server
Créez une fonction qui :
Possède des paramètres pour le nom indiquant le lecteur virtuel, l'ID de connexion et le chemin d'accès du fournisseur à associer au lecteur virtuel.
Utilise
read-host
pour inviter l'utilisateur à fournir le mot de passe.Utilise
new-object
pour créer un objet d'informations d'identification.Utilise
new-psdrive
pour créer un lecteur virtuel avec les informations d'identification fournies.
Appelez la fonction pour créer un lecteur virtuel avec les informations d'identification fournies.
Exemple (lecteur virtuel)
Cet exemple crée une fonction nommée sqldrive que vous pouvez utiliser pour créer un lecteur virtuel associé à la connexion via l'authentification SQL Server et à l'instance spécifiées.
La fonction sqldrive vous invite à entrer le mot de passe de votre connexion, en masquant celui-ci à mesure que vous le tapez. Ensuite, chaque fois que vous utilisez la commande modifier le répertoire (cd
) pour vous connecter à un chemin à l’aide du nom du lecteur virtuel, toutes les opérations sont effectuées à l’aide des informations d’identification de connexion de l’authentification SQL Server que vous avez fournies lors de la création du lecteur.
## Create a function that specifies the login and prompts for the password.
function sqldrive
{
param( [string]$name, [string]$login = "MyLogin", [string]$root = "SQLSERVER:\SQL\MyComputer\MyInstance" )
$pwd = Read-Host -AsSecureString -Prompt "Password"
$cred = New-Object System.Management.Automation.PSCredential -argumentlist $login, $pwd
New-PSDrive $name -PSProvider SqlServer -Root $root -Credential $cred -Scope 1
}
## Use the sqldrive function to create a SQLAuth virtual drive.
sqldrive SQLAuth
## CD to the virtual drive, which invokes the supplied authentication credentials.
cd SQLAuth
Authentification SQL Server avec Invoke-Sqlcmd
Pour utiliser Invoke-Sqlcmd avec l'authentification SQL Server
- Utilisez le paramètre de
-Username
pour spécifier un ID de connexion, et le paramètre de-Password
pour spécifier le mot de passe associé.
Exemple (Invoke-Sqlcmd)
Cet exemple utilise l'applet de commande read-host pour inviter l'utilisateur à entrer un mot de passe, puis se connecte via l'authentification SQL Server.
## Prompt the user for their password.
$pwd = Read-Host -AsSecureString -Prompt "Password"
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance" -Username "MyLogin" -Password $pwd
Voir aussi
SQL Server PowerShell
Fournisseur SQL Server PowerShell
Invoke-Sqlcmd, applet de commande