SQL Server PowerShell パスの移動

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

Note

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 など) その種類のオブジェクトの一覧 (データベースの場合は mastermodelAdventureWorks2022 など)。
オブジェクト名ノード (AdventureWorks2022 など) オブジェクト内に格納されているオブジェクトの種類の一覧。 たとえば、データベースの場合はテーブルやビューなどのオブジェクトの種類が一覧表示されます。

既定では、 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)

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

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

参照