PowerShell をコマンドプロンプトからセキュリティの制限を回避して実行できるように以下のバッチファイルを Windows フォルダに置いています。 ▼ ps.bat@powershell -NoProfile -ExecutionPolicy Unrestricted "./%1.ps1"これによって、カレントフォルダの .ps1 スクリプトファイルを名前を指定して実行できます。 ado_com_mysql.ps1 データベースから条件に合ったレコードを読みだして、CSV 形式で出力する為のテキストを作成して最後に出力します。 その処理中にレコード毎に更新を行っています。 CSV 形式のカンマは、常に項目の後ろに追加して、行が完成した後一文字を行の最後から削除して作成しています。( いわゆる Chop です ) ここでは、その為に $line.Substring(0,$line.Length-1) を実行しています。 Hey, Scripting Guy! Blog では、正規表現による置換を使った方法も紹介されています。 $error[0] | Format-List * -force は、$error の中のプロパティと内容を全て表示する方法です。 ▼ 参考 How to list all properties of a Powershell object? 実行はコマンドプロンプトから ps ado_com_mysql となります
$cn = New-Object -ComObject ADODB.Connection $rs = New-Object -ComObject ADODB.Recordset $driver = "{MySQL ODBC 5.3 Unicode Driver}" $server = "localhost" $db = "lightbox" $user = "root" $pass = "" $connectionString = "Provider=MSDASQL;Driver={0};Server={1};DATABASE={2};UID={3};PWD={4};" $connectionString = $connectionString -f $driver,$server,$db,$user,$pass $connectionString try { $cn.Open( $connectionString ) } catch [Exception] { $error[0] | Format-List * -force exit } $rs.CursorType = 2 $rs.LockType = 3 $rs.Open( "select * from 社員マスタ where 社員コード <= '0004' ", $cn ) $text = "" while( !$rs.EOF ) { $line = "" $line += "{0}{1}" -f $rs.Fields("社員コード").Value, "," $line += "{0}{1}" -f $rs.Fields("氏名").Value, "," $line += "{0}{1}" -f $rs.Fields("フリガナ").Value, "," $line += "{0}{1}" -f $rs.Fields("所属").Value, "," $line += "{0}{1}" -f $rs.Fields("性別").Value.ToString(), "," $line += "{0}{1}" -f $rs.Fields("給与").Value.ToString(), "," $line += "{0}{1}" -f $rs.Fields("手当").Value.ToString(), "," $line += "{0}{1}" -f $rs.Fields("管理者").Value, "," $line += "{0}{1}" -f $rs.Fields("作成日").Value.ToString("yyyy/MM/dd"), "," $line += "{0}{1}" -f $rs.Fields("更新日").Value.ToString("yyyy/MM/dd"), "," $line += "{0}{1}" -f $rs.Fields("生年月日").Value.ToString("yyyy/MM/dd"), "," $line = $line.Substring(0,$line.Length-1) $line += "`n" $text += $line $rs.Fields("管理者").Value = "0001" $rs.Update() $rs.MoveNext() } $text if ( $cn.State -ge 1 ) { $cn.Close() }
関連する記事 ▼ Python + COM Eclipse + Python(Pydev) : pywin32(COM使用の為) + MySQL Connector/ODBC でループ処理をしながら更新 ▼ Ruby + COM Eclipse + Ruby : win32ole(COM使用の為) + MySQL Connector/ODBC でループ処理をしながら更新
|
【PowerShellの最新記事】
- PowerShell のバージョンを確認して、最新の PowerShell(pwsh)を実行する方法
- PowerShell で System.Data.Odbc を使用して MySQL のデータを一覧表示( csv )
- PowerShell でエクスプローラでコピーしたファイルリストを取得して、テキストのクリップボードに再度コピーしなおす
- PowerShell : ファイルを開くダイアログを使うのに System.Windows.Forms を参照する二つの方法
- PowerShell2.0 : PowerShell のコードだけで TKMP.dll を使用してメールを送信する
- PowerShell2.0 : PowerShell 内で VBのコードを記述(TKMP.dllを使用)して、exe を作成した後実行してメールを送信する
- PowerShell で PNG 画像にフォントを指定してテキストを書き込む
- PowerShell で、SQLServer2012 の SMO を使用してテーブルの create 用のスクリプトを出力する
- PowerShell より New-Object で .NET Framework を使って簡単にバイナリファイルをアップロードする
- PowerShell より COM オブジェクトを使用して、簡単にバイナリファイルをアップロードする
- PowerShell2.0 : here-string と呼ばれるヒアドキュメント( here-string )の構文
- PowerShell2.0 : 初めての PowerShell / ファイルのダウンロード (.NET Framework の利用)
- PowerShell2.0 : ファイルを開くダイアログを使う
- PowerShell2.0 : イベントの処理とタイマーと、関数と変数のスコープ
- PowerShell(スクリプト)の引数を格納する配列変数 $args の扱い
- PowerShell2.0 : Shell.Application でディレクトリ内のファイルとディレクトリの個数( .NET の文字列フォーマット )
- PowerShell2.0 : PowerShell ISE で Excel のオブジェクトを利用して完全に終了(メモリから解放)させるには
- PowerShell2.0 : 全ての日本語ヘルプファイル(テキスト)を作成するスクリプト
- PowerShell2.0 : プロンプトの変更
- PowerShell2.0 : .NET Framework のスタティックメソッドの実行