共用方式為


管理資料庫引擎 PowerShell 中的驗證

依預設,連線至資料庫引擎的執行個體時,SQL Server PowerShell 元件會使用 Windows 驗證。 您可以藉由定義 PowerShell 虛擬磁碟驅動器,或指定 的 -Username-Password 參數 Invoke-Sqlcmd,來使用 SQL Server 驗證。

  1. 開始之前:權限

  2. 若要設定驗證,請使用: A 虛擬磁碟驅動器Invoke-Sqlcmd

權限

您在資料庫引擎的執行個體中可執行的所有動作,都是透過授與驗證認證的權限所控制,而這些驗證認證用來連線至執行個體。 依預設,SQL Server 提供者和 Cmdlet 會使用其執行時所依據的 Windows 帳戶,來建立資料庫引擎的 Windows 驗證連線。

若要進行 SQL Server 驗證連線,您必須提供 SQL Server 驗證登入識別碼和密碼。 使用 SQL Server 提供者時,您必須將 SQL Server 登入認證與虛擬磁碟驅動器產生關聯,然後使用變更目錄命令 (cd) 連線到該磁碟驅動器。 在 Windows PowerShell 中,安全性認證只能與虛擬磁碟機產生關聯。

使用虛擬磁碟機的 SQL Server 驗證

建立與 SQL Server 驗證登入相關聯的虛擬磁碟驅動器

  1. 建立的函數:

    1. 具有參數可表示提供給虛擬磁碟機的名稱、登入識別碼,以及與虛擬磁碟機相關聯的提供者路徑。

    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 驗證

若要搭配 SQL Server 驗證使用 Invoke-Sqlcmd

  1. -Username使用 參數來指定登入標識碼,並使用 -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