2017年5月14日日曜日

PowerShell から FileMaker ODBC 経由で新規レコードを作成。|FileMaker ODBC|INSERT INTO|PowerShell

PowerShell から FileMaker ODBC 経由で新規レコードを作成。|FileMaker ODBC|INSERT INTO|PowerShell


[void][System.Reflection.Assembly]::LoadWithPartialName('System.Data');
$connectionString = 'driver={FileMaker ODBC};server=localhost;database=テスト;uid=admin;pwd=;';
$cmd = "INSERT INTO  `"テスト`" (`"フィールド1`") VALUES('フィールド1の値')";

$odbc_con = New-Object System.Data.Odbc.OdbcConnection($connectionString);
$odbc_con.Open();
$odbc_cmd = New-Object System.Data.Odbc.OdbcCommand;
$odbc_cmd.Connection = $odbc_con;
$odbc_cmd.CommandText = $cmd;

$Result = $odbc_cmd.ExecuteNonQuery();

$odbc_cmd.Dispose();
$odbc_con.Close();
$odbc_con.Dispose() ;
$Result;
<#UPDATE、INSERT、および DELETE のステートメントでは、戻り値は、コマンドは、影響を受ける行の数です。#>

PowerShell から FileMaker ODBC 経由で値を取得。|FileMaker ODBC|SELECT|PowerShell

PowerShell から FileMaker ODBC 経由で値を取得。


[void][System.Reflection.Assembly]::LoadWithPartialName('System.Data');
$connectionString = 'driver={FileMaker ODBC};server=localhost;database={FileMaker_FileName};uid=admin;pwd=;';
$cmd = 'SELECT * FROM {TableName}';

$odbc_con = New-Object System.Data.Odbc.OdbcConnection($connectionString);
$odbc_con.Open();
$odbc_cmd = New-Object System.Data.Odbc.OdbcCommand;
$odbc_cmd.Connection = $odbc_con;
$odbc_cmd.CommandText = $cmd;
$odbcReader = $odbc_cmd.ExecuteReader();
while ($odbcReader.Read()) {
    $odbcReader['{FieldName}'].ToString() + ' ' + $odbcReader['{FieldName}'].ToString()
}

$odbc_cmd.Dispose();
$odbc_con.Close();
$odbc_con.Dispose() ;

PowerShell Word ファイル内の文字列を置換。word/document.xml

Add-Type -AssemblyName "System.IO.Compression.FileSystem";

$FilePath='C:\Users\PCUSER\Desktop\!Temp\tf00002122.docx';

$lookupTable = @{
'{Title}'='タイトル' ;
'{Heading1}'='見出し1' ;
'{Heading2}'='見出し2' ;
'{Heading3}'='見出し3' ;
'{Heading4}'='見出し4' ;
}

<#word/document.xmlを読み込み#>
$archive = [System.IO.Compression.ZipFile]::OpenRead($FilePath);
$objdocument=$archive.Entries | Where-Object{ $_.FullName -eq 'word/document.xml'};

$sr = New-Object System.IO.StreamReader($objdocument.Open(),[Text.Encoding]::GetEncoding("UTF-8"));
$DocXML=$sr.ReadToEnd();
$sr.Close();
$archive.Dispose();

 $lookupTable.GetEnumerator() | ForEach-Object {
     $NewDocXML=$NewDocXML -replace $_.Key , $_.Value;
    }

<#word/document.xmlを削除#>
$archive = [System.IO.Compression.ZipFile]::Open($FilePath,[System.IO.Compression.ZipArchiveMode]::Update);
$objdocument=$archive.Entries | Where-Object{ $_.FullName -eq 'word/document.xml'};
$objdocument.Delete();
<#word/document.xmlを追加#>
$ZipArchiveEntry=$archive.CreateEntry('word/document.xml');

$sw = New-Object System.IO.StreamWriter($ZipArchiveEntry.Open(), [Text.Encoding]::GetEncoding("UTF-8"));
$sw.Write($NewDocXML);
$sw.Close();

$archive.Dispose();