みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております。
現在、FilemakerからVBS文をフィールド内容のエクスポートとVBScriptの実行でExcelファイルの作成と操作について簡単ではありますが出来ます、以前からPowerShellでも同じようなことが出来ないかと思っていました。フィールド内容のエクスポートでPowerShellのスクくリプトファイル作成までは出来るのですが、PowerShellの場合VBSと違いファイルを自動的に開くにしてもスクリプトは実行されません(但し、直接ファイルを選択しPowerShellで実行で出来ます。)。それで今回Eventを送信で出来ないかと考え倦ねた結果、直接Eventを送信では実行する方法が見つからず、フィールド内容のエクスポートとEventを送信の2段構えの方法でExcelファイルの作成までは出来ましたが。PowerShell初心者ですしイマイチ自信がありません。もっと簡単な方法あると思うのですが、ご教示お願いします。
試した方法
コマンドフィールドのPowerShell文
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $False
$book = $excel.Workbooks.Add()
$sheet = $excel.Worksheets.Item(1)
$sheet.Cells.Item(2,3) = "PowerShellでExcelファイルを新規作成"
$book.SaveAs("C:\TEST\AAA.xlsx")
$excel.Quit()
$excel = $null
[GC]::Collect()
スクリプト
• フィールド内容のエクスポート [ Pow::コマンド; 「file:../../../../TEST/power.ps1」; 自動的に開く; ディレクトリの作成:いいえ ]
• Event を送信 [ ファイル/アプリケーションを開く; "powershell -WindowStyle Hidden -ExecutionPolicy Bypass -command .\power.ps1" ] [ アプリケーションを手前に表示 ]
Pc環境 win10 fm17
失敗、この方法ではfilemakerを一旦閉じるとPowerShellのスクリプトの実行が出来ない結果となりました。再度フィールド内容のエクスポートで出力ファイルの指定をすれば出来るのですが・・・やはりPowerShellは難しい。なんか方法はないものか
「フィールド内容のエクスポート」で 自動起動にしても PowerShellが動作しないのは、拡張子 *.ps1 が、「Windows PowerShell」と関連付けされていない事が考えられますが、ダブルクリックで実行できるんでしょうか?
Event を送信 [ ファイル/アプリケーションを開く; "powershell -WindowStyle Hidden -.....
にすれば、関連付けがなくても実行できるし、PowerShellのコンソールも出ないのでその方法で良いのでは。
また、PowerShellでExcelを操作する場合、以下のようなモノもあるので興味があれば試してみて下さい。
Operate Excel|Excelを操作 - ScriptMakerPS | FileMaker Plugin for Windows
https://sites.google.com/site/scriptmak … rate-excel
Offline
qb_dps様、何時ももご回答していただい有難うございます。
PowerShell でセキュリティのためデフォルトでは、「.ps1」のスクリプトファイルの実行が禁止されています。エクスプローラ上で.ps1ファイルをダブルクリックしても、単にテキストエディタで開かれるだけで、これは、ユーザーや管理者が知らないうちにPowerShellを悪用したウイルスなどがインストールされ、実行されないようにするためみたい。・・・その対策としてはレジストリ設定を変更とかショートカットの作成とかバッチファイルの作成とかあるみたいだけど、それとfilemaker上でどうすれば可能か私の能力では未知の世界です。.ps1ファイルを実行するかどうかは、PowerShellの「実行ポリシー(Execution Policy)」で制御されているので、警告やユーザーへの確認なしに、全てのスクリプトが実行可能な「Bypass」でなんとかなると思いましたが、リンクの指定が悪いのか切れてしまいます。フィールド内容のエクスポートで出力ファイルの指定をしなければ、手間が増えますがその都度手作業で「.ps1」ファイルを指定すれば可能です。
以下のようにするとセキュリティーポリシーに関係なく実行できます。
※行の終わりに ; セミコロンを追加してください。
フィールドA
$excel = New-Object -ComObject Excel.Application;
$excel.Visible = $False;
$book = $excel.Workbooks.Add();
$sheet = $excel.Worksheets.Item(1);
$sheet.Cells.Item(2,3) = "PowerShellでExcelファイルを新規作成";
$book.SaveAs("C:\TEST\AAA.xlsx");
$excel.Quit();
$excel = $null;
[GC]::Collect();変数を設定 [$PS; 値: "powershell -WindowStyle Hidden -Command \"" & Substitute ( フィールドA ; [¶ ; "" ] ; ["\"" ; "\\\"" ] ) & "\""]
Event を送信 [「aevt」; 「odoc」; $PS]
ちなみにプラグインを使用した場合、
変数を設定 [$er; 値: SMPS_Exe( フィールドA ) ]
で実行できます。戻り値の取得もできるのでセルの値を取得することもできます。
※プラグインの場合もセキュリティーポリシーに関係なく実行できます。
Operate Excel|Excelを操作 - ScriptMakerPS | FileMaker Plugin for Windows
https://sites.google.com/site/scriptmak … rate-excel
Offline
qb_dps様、出来ました!!
PowerShellスクリプトを使わないで編集されたPowerShellコマンドをEvent を送信だけで出来るのですね。これなら直接コマンドで命令するのでリンクの切断のような状況にならないで済みますね。
有難うございました。
コマンドラインの長さに制限(2048だか8192だか)があるので、ご注意。
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 562.95 KiB (Peak: 582.1 KiB) ]