SQL Server PowerShell パスの移動

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

データベース エンジン PowerShell プロバイダーは、ファイル パスと同様の構造で、SQL Server のインスタンス内のオブジェクトのセットを公開します。 Windows PowerShell コマンドレットを使用することで、プロバイダー パスを移動し、カスタム ドライブを作成して、入力するパスを短くすることができます。

注意

SQL Server PowerShell モジュールには SqlServerSQLPS の 2 つがあります。

SqlServer モジュールは、使用する現在の PowerShell モジュールです。

SQLPS モジュールは、(後方互換性のため) SQL Server のインストールに含まれていますが、今後更新されることはありません。

SqlServer モジュールには、SQLPS のコマンドレットの更新バージョンに加え、最新の SQL 機能をサポートする新しいコマンドレットが含まれています。

PowerShell ギャラリーから SqlServer モジュールをインストールします。

詳細については、「SQL Server PowerShell」を参照してください。

Windows PowerShell では、コマンドレットを実装して、PowerShell プロバイダーによりサポートされるオブジェクトの階層を表すパス構造を移動できます。 そのパス内のノードへ移動したときに、他のコマンドレットを使用して、現在のオブジェクトの基本的な操作を実行することができます。 コマンドレットは頻繁に使用されるため、短い標準の別名が用意されています。 また、コマンドレットを類似のコマンド プロンプトのコマンドにマップする別名のセットと、UNIX シェル コマンド用の別のセットもあります。

SQL Server プロバイダーは、次の表に示すように、プロバイダーのコマンドレットのサブセットを実装します。

コマンドレット 標準の別名 コマンドの別名 UNIX シェルの別名 説明
Get-Location gl pwd pwd 現在のノードを取得します。
Set-Location sl cd、chdir cd、chdir 現在のノードを変更します。
Get-ChildItem gci dir ls 現在のノードに格納されているオブジェクトの一覧を表示します。
Get-Item gi 現在のアイテムのプロパティを返します。
Rename-Item rni rn ren オブジェクトの名前を変更します。
Remove-Item ri del、rd rm、rmdir オブジェクトを削除します。

重要

一部の SQL Server 識別子 (オブジェクト名) には、Windows PowerShell のパス名ではサポートされない文字が含まれている場合があります。 それらの文字を含む名前の使用方法の詳細については、「 PowerShell での SQL Server 識別子」を参照してください。

Get-childitem によって返される SQL Server 情報

Get-ChildItem (またはその別名の dir および ls ) で返される情報は、SQLSERVER: パス内の場所によって異なります。

パスの場所 Get-ChildItem の結果
SQLSERVER:\SQL ローカル コンピューターの名前を返します。 SMO または WMI を使用して他のコンピューター上の データベース エンジン のインスタンスに接続している場合は、それらのコンピューターも一覧表示されます。
SQLSERVER:\SQL\ComputerName コンピューター上の データベース エンジン のインスタンスの一覧。
SQLSERVER:\SQL\ComputerName\InstanceName インスタンス内の最上位レベルのオブジェクトの種類の一覧 (Endpoints、Certificates、Databases など)。
オブジェクト クラスのノード (Databases など) その種類のオブジェクトの一覧 (データベースの場合は master、model、AdventureWorks2008R2 など)。
オブジェクト名のノード (AdventureWorks2012 など) オブジェクト内に格納されているオブジェクトの種類の一覧。 たとえば、データベースの場合はテーブルやビューなどのオブジェクトの種類が一覧表示されます。

既定では、 Get-ChildItem でシステム オブジェクトは一覧表示されません。 システム オブジェクト (たとえば sys スキーマ内のオブジェクト) を表示するには、 Force パラメーターを使用します。

カスタム ドライブ

Windows PowerShell では、"PowerShell ドライブ" と呼ばれる仮想ドライブをユーザーが定義できます。 これらのドライブには、パス ステートメントの開始ノードがマップされます。 これらは、通常、頻繁に入力されるパスを短縮するために使用します。 SQLSERVER: パスは長くなることがあり、長くなるとその分 Windows PowerShell ウィンドウ内の領域が使用され、多くの入力が必要になります。 特定のパス ノードで多くの作業を行う場合は、そのノードにマップされる Windows PowerShell のカスタム ドライブを定義することができます。

PowerShell コマンドレットの別名の使用

コマンドレットの別名の使用

  • 完全なコマンドレット名を入力する代わりに、より短い別名、つまり使い慣れたコマンド プロンプト コマンドに割り当てられた名前を入力します。

別名の例 (PowerShell)

たとえば、次に示す一連のコマンドレットまたは別名のいずれかを使用して、SQLSERVER:\SQL フォルダーに移動しフォルダーの子アイテムの一覧を要求することによって、使用できる SQL Server インスタンスの一覧を取得することができます。

## Shows using the full cmdet name.  
Set-Location SQLSERVER:\SQL  
Get-ChildItem  
  
## Shows using canonical aliases.  
sl SQLSERVER:\SQL  
gci  
  
## Shows using command prompt aliases.  
cd SQLSERVER:\SQL  
dir  
  
## Shows using Unix shell aliases.  
cd SQLSERVER:\SQL  
ls  

Get-ChildItem の使用

Get-childitem を使用した情報の取得

  1. 子の一覧を取得する対象のノードに移動します。

  2. Get-childitem を実行して、一覧を取得します。

Get-ChildItem の例 (PowerShell)

これらの例は、SQL Server プロバイダー パス内の異なるノードについて、Get-Childitem で返される情報を示しています。

## Return the current computer and any computer  
## to which you have made a SQL or WMI connection.  
Set-Location SQLSERVER:\SQL  
Get-ChildItem  
  
## List the instances of the Database Engine on the local computer.  
  
Set-Location SQLSERVER:\SQL\localhost  
Get-ChildItem  
  
## Lists the categories of objects available in the  
## default instance on the local computer.  
Set-Location SQLSERVER:\SQL\localhost\DEFAULT  
Get-ChildItem  
  
## Lists the databases from the local default instance.  
## The force parameter is used to include the system databases.  
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases  
Get-ChildItem -force  

カスタム ドライブの作成

カスタム ドライブの作成と使用

  1. New-PSDrive を使用して、カスタム ドライブを定義します。 Root パラメーターを使用して、カスタム ドライブ名で表されるパスを指定します。

  2. Set-Location などのパス移動コマンドレットでカスタム ドライブ名を参照します。

カスタム ドライブの例 (PowerShell)

この例では、配置された AdventureWorks2012 サンプル データベースのコピーのノードにマップする AWDB という名前の仮想ドライブを作成します。 仮想ドライブを使用して、データベース内のテーブルに移動します。

## Create a new virtual drive.  
New-PSDrive -Name AWDB -Root SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2012  
  
## Use AWDB: to navigate to a specific table.  
Set-Location AWDB:\Tables\Purchasing.Vendor  

参照