在数据库引擎 PowerShell 中管理身份验证

默认情况下,SQL Server PowerShell 组件在连接到数据库引擎实例时使用 Windows 身份验证。 您可以通过定义 PowerShell 虚拟驱动器,或者通过为 Invoke-Sqlcmd 指定 –Username 和 –Password 参数,使用 SQL Server 身份验证。

  1. 准备工作: 权限

  2. **若要设置身份验证,请使用:**虚拟驱动器、Invoke-Sqlcmd

权限

您可以在数据库引擎实例中执行的所有操作都受到授予用于连接到该实例的身份验证凭据的权限的控制。 默认情况下,SQL Server PowerShell 和 cmdlet 将使用其运行所基于的 Windows 帐户来建立与数据库引擎的 Windows 身份验证连接。

若要建立 SQL Server 身份验证连接,您必须提供 SQL Server 身份验证登录 ID 和密码。 在使用 SQL Server 提供程序时,您必须将 SQL Server 登录凭据与虚拟驱动器关联起来,然后使用更改目录命令 (cd) 连接到该驱动器。 在 Windows PowerShell 中,安全凭据只能与虚拟驱动器关联。

[返回页首]

使用虚拟驱动器进行 SQL Server 身份验证

创建与 SQL Server 身份验证登录相关联的虚拟驱动器

  1. 创建一个函数,该函数:

    1. 具有针对为虚拟驱动器提供的名称、登录 ID 以及要与虚拟驱动器相关联的提供程序路径的参数。

    2. 使用 read-host 来提示用户输入密码。

    3. 使用 new-object 来创建凭据对象。

    4. 使用 new-psdrive 来创建具有提供的凭据的虚拟驱动器。

  2. 调用函数来创建具有提供的凭据的虚拟驱动器。

[返回页首]

示例(虚拟驱动器)

此示例创建名为 sqldrive 的函数,您可使用该函数来创建与指定 SQL Server 身份验证登录名和实例相关联的虚拟驱动器。

sqldrive 函数提示您输入登录名的密码,并在您键入密码时屏蔽密码。 以后,您每次使用更改目录命令 (cd) 来通过使用虚拟驱动器名称连接到一个路径时,所有操作都将使用您在创建驱动器时提供的 SQL Server 身份验证登录凭据来执行。

## 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

[返回页首]

使用 Invoke-Sqlcmd 的 SQL Server 身份验证

将 Invoke-Sqlcmd 用于 SQL Server 身份验证

  1. 使用 –Username 参数可以指定一个登录 ID,以及用于指定关联密码的 –Password 参数。

示例 (Invoke-Sqlcmd)

此示例使用 read-host cmdlet 来提示用户输入密码,然后使用 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

[返回页首]

请参阅

概念

SQL Server PowerShell

SQL Server PowerShell 提供程序

Invoke-Sqlcmd cmdlet