Windows Server 2012のWDACで使用できるPowerShellコマンドレット (Set-OdbcDsn) について

スポンサーリンク

Windows Server 2012では、Windows Server 2008 R2からActive Directory (AD)やフェールオーバー クラスタリング (WSFC) といったサーバー管理におけるPowerShellコマンドレットが強化、および追加されました。

各役割および機能に関するPowerShellコマンドレットのヘルプについて、オンライン上で公開されていますが、現時点では主に英語のみで日本語の情報はあまり公開されていないようです。

ここでは、Windows Server 2012のWindowsデータ アクセス コンポーネント (WDAC)に関するPowerShellコマンドレットの情報について、日本語としてオンライン上で備忘録として確認したいと思い、本ブログ上で纏めてみました (内容については「Get-Help」コマンドレットの-Fullオプションを用いて実行した結果を編集、補足したものとなります)。

この記事では、「Set-OdbcDsn」コマンドレットについて記載します (他のコマンドレットについては、「Windows Server 2012のWDACで使用できるPowerShellコマンドレットについて」を参照)。

■名前

Set-OdbcDsn

■概要

システム上に存在する1つ、もしくは複数ODBCデータ ソース名 (DSN) を構成します。

■構文

Set-OdbcDsn [-InputObject] <CimInstance#MSFT_OdbcDsn[]> [-PassThru]
     [-SetPropertyValue <string[]>] [-RemovePropertyValue <string[]>]
     [-CimSession <CimSession[]>] [-ThrottleLimit <int32>] [-AsJob] [-WhatIf] [-Confirm]
     [<CommonParameters>]

Set-OdbcDsn [-Name] <string> -DsnType <string> {User | System | All} [-PassThru]
     [-SetPropertyValue <string[]>] [-RemovePropertyValue <string[]>]
     [-DriverName <string>] [-Platform <string> {32-bit | 64-bit | All}]
     [-CimSession <CimSession[]>] [-ThrottleLimit <int32>] [-AsJob] [-WhatIf] [-Confirm]
     [<CommonParameters>]

■説明

Set-OdbcDsnコマンドレットは、 1つ、もしくは複数存在するODBC DSNのプロパティを構成します。-SetPropertyValueパラメーターを指定することでプロパティの追加、修正が可能であり、-RemovePropertyValueparameパラメーターを指定することでプロパティの削除が可能です。

新しいDSNを追加する場合、Add-OdbcDsnを使用します。

ODBC、データソース名およびドライバに関する詳細な情報については、Microsoft Open Database Connectivity (ODBC)Data Sources、もしくはDriversを参照してください。

■パラメーター

-AsJob
バックグラウンド ジョブとして、コマンドレットを実行します。完了するまでに長時間要するコマンドを実行する場合、このパラメーターを使用します。 コマンドレットは、ジョブとして扱われるオブジェクトを返し、コマンドプロンプト上に表示します。ジョブが完了する間、セッション中で実行し続けることが可能です。ジョブを管理するために、*-Jobコマンドレットを使用済ます。ジョブの結果を得るためには、Receive-Jobコマンドレットを使用します。Windows PowerShellバックグランド ジョブに関する詳細な情報は、about_Jobsを参照してください。

エイリアスなし
必須false
位置named
既定値なし
パイプライン入力を許可するfalse
ワイルドカード文字を許可するfalse

-CimSession <CimSession[]>
リモート セッション内、もしくはリモート コンピューター上でコマンドレットを実行します。New-CimSessionコマンドレット、もしくはGet-CimSessionコマンドレットの出力のようなコンピューター名、もしくはセッション オブジェクトをに入力します。 既定ではローカル コンピューター上のカレント セッションとなります。

エイリアスなし
必須false
位置named
既定値なし
パイプライン入力を許可するfalse
ワイルドカード文字を許可するfalse

-Confirm
コマンドを実行する前に実行の是非を確認するプロンプトを表示します。

エイリアスcf
必須false
位置named
既定値なし
パイプライン入力を許可するfalse
ワイルドカード文字を許可するfalse

-DriverName <string>
指定したODBCドライバーが使用しているODBC DSNのみを取得します。ワイルドカードを使用することが可能です。既定ではすべてのODBC DSNを返します。

エイリアスなし
必須false
位置named
既定値なし
パイプライン入力を許可するtrue (ByPropertyName)
ワイルドカード文字を許可するtrue

-DsnType <string>
ODBC DSNの型を取得します。指定可能な値は、「User」、「System」、および「All」です。

エイリアスなし
必須true
位置named
既定値なし
パイプライン入力を許可するtrue (ByPropertyName)
ワイルドカード文字を許可するfalse

-InputObject <CimInstance#MSFT_OdbcDsn[]>
指定されたODBC DSN オブジェクトによって表されるODBC DSNを修正します。オブジェクトを含む変数を入力、コマンドを入力、もしくは取得するオブジェクトを表します。

エイリアスなし
必須true
位置1
既定値なし
パイプライン入力を許可するtrue (ByValue)
ワイルドカード文字を許可するfalse

-Name <string>
設定するODBC名。ワイルドカードを使用することが可能です。

エイリアスなし
必須true
位置1
既定値なし
パイプライン入力を許可するtrue (ByPropertyName)
ワイルドカード文字を許可するtrue

-PassThru
パイプラインをとおしてコマンドレットで修正されるオブジェクトを通過します。既定では、コマンドレットはパイプラインをとおしてオブジェクトを取得することはできません。

設定した内容を表しているオブジェクトを返します。既定では、コマンドレットは出力を生成することはできません。

エイリアスなし
必須false
位置named
既定値なし
パイプライン入力を許可するfalse
ワイルドカード文字を許可するfalse

-Platform <string>
設定するODBC DSNのプラットフォーム アーキテクチャを指定します。 指定可能な値は、「32-bit」、「64-bit」、および「All」です。 このコマンドがリモートCIMセッションで実行されるならば、これはリモート マシンのプラットフォーム アーキテクチャです。

エイリアスなし
必須false
位置named
既定値なし
パイプライン入力を許可するtrue (ByPropertyName)
ワイルドカード文字を許可するfalse

-RemovePropertyValue <string[]>
削除するODBC DSNのプロパティ値を指定します。これは、削除されるキーの配列です。

エイリアスなし
必須false
位置named
既定値なし
パイプライン入力を許可するtrue (ByPropertyName)
ワイルドカード文字を許可するfalse

-SetPropertyValue <string[]>
修正、もしくは追加するODBC DSNのプロパティ値を指定します。それぞれの列が、<key>=<value>となっている配列の形式となります。

エイリアスなし
必須false
位置named
既定値なし
パイプライン入力を許可するtrue (ByPropertyName)
ワイルドカード文字を許可するfalse

-ThrottleLimit <int32>
コマンドレットを実行するために設定することができる並列実行の最大数を指定します。このパラメータが省略される、もしくは値に0が入力される場合、Windows PowerShellは、コンピューター上で動作しているCIMコマンドレットの数に基づいて、コマンドレットに対する最適のスロットル制限を計算します。スロットル制限は、現在のコマンドレットのみに適用され、セッションもしくはコンピューターには適用されません。

エイリアスなし
必須false
位置named
既定値なし
パイプライン入力を許可するfalse
ワイルドカード文字を許可するfalse

-WhatIf
実際にコマンドを実行せずに、コマンドを実行すると何が起きるかを出力します。

エイリアスwi
必須false
位置named
既定値なし
パイプライン入力を許可するfalse
ワイルドカード文字を許可するfalse

<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose-Debug-ErrorAction-ErrorVariable-WarningAction-WarningVariable-OutBuffer、および-OutVariable。詳細については、「about_commonparameters」と入力してヘルプを参照してください。

■入力

System.String[]
Microsoft.Management.Infrastructure.CimInstance[]
System.String

■出力

Microsoft.Management.Infrastructure.CimInstance[]
Microsoft.Management.Infrastructure.CimInstance#MSFT_OdbcDsn
Microsoft.Management.Infrastructure.CimInstance[]
Microsoft.Management.Infrastructure.CimInstance#MSFT_OdbcDsn

■エイリアス

なし

■メモ

このコマンドレットを含むモジュールのヘルプ ファイルをダウンロードしてインストールするには、Update-Helpを使用してください。

■例

例1

 Set-OdbcDsn -Name &quot;MyPayroll&quot; -DsnType System -Platform 64-bit -SetPropertyValue &quot;Database=Payroll&quot; 

例1:説明

このコマンドは、「Payroll」と名のデータベースを使用するために、「MyPayroll」という名の64ビット システムDSNに変更します。

例2

 Set-OdbcDsn MyPayroll -DsnType System -SetPropertyValue &quot;Database=Payroll&quot; 

例2:説明

このコマンドは、例1に似ていますが、既定のプラットフォーム値であるネイティブ プラットフォーム上のDSNを構成します。例3

 Set-OdbcDsn -Name &quot;MyPayroll&quot; -DsnType User -Platform 32-bit -RemovePropertyValue @(&quot;UID&quot;, &quot;PWD&quot;) -SetPropertyValue @(&quot;Trusted_Connection=Yes&quot;, &quot;Database=Payroll&quot;) 

例3:説明

このコマンドは、32ビット ユーザーDSNの「MyPayroll」と同じものに対して、SQL Server認証からWindows認証への使用を変更します。

例4

 Set-OdbcDsn -Name &quot;*Payroll*&quot; -DsnType All -Platform All -DriverName &quot;Microsoft Access Driver (*.mdb, *.accdb)&quot; -SetPropertyValue 'Dbq=C:payroll.accdb' 

例4:説明

このコマンドは、ワイルドカード「*Payroll*」にマッチする両方のプラットフォーム上のすべてのODBCユーザーDSNおよびシステムDSNを変更し、データベース ファイル「C:payroll.accdb」を使用する「Microsoft Access Driver (*.mdb, *.accdb)」ドライバーを使用します。

例5

 Get-OdbcDsn -DriverName &quot;SQL Server*&quot; -DsnType All -Platform All | Where-Object{ ($_.Attribute[&quot;Server&quot;] -eq &quot;oldServer&quot;) } | Set-OdbcDsn -SetPropertyValue &quot;Server=newServer&quot; 

例5:説明

このコマンドは、「SQL Server」から始まるドライバーを使用するすべてのODBCユーザーDSNおよびシステムDSNを、oldServerからnewServerへ移行します。

例6

 $sysDsn = Set-OdbcDsn &quot;MyPayroll&quot; -DsnType System -Platform All -SetPropertyValue &quot;Database=Payroll&quot; -PassThru 

例6:説明

このコマンドは、例1と同じですが、出力オブジェクトをPowerShell変数に格納します。 既定では、このコマンドは-PassThruパラメーターが指定されていない場合は、ドライバー オブジェクトは返しません。

例7

$dsnArray = Get-OdbcDsn -DriverName &quot;SQL Server*&quot; | Where-Object{ ($_.Attribute[&quot;Server&quot;] -eq &quot;oldServer&quot;) }
Set-OdbcDsn $dsnArray -SetPropertyValue &quot;Server=newServer&quot;

例7:説明

このコマンドは、PowerShell変数「$dsnArray」を用いて、「SQL Server」から始まるドライバーを使用するすべてのODBCユーザーDSNおよびシステムDSNを、oldServerからnewServerへ移行します。

■関連するリンク

  • Add-OdbcDsn
  • Get-OdbcDsn
  • Remove-OdbcDsn
  • Wdac

[参考]