みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMakerにて、PCの管理を行いたいと思っています。
ホスト名を入力してボタンを押すと、そのPCのCPUやRAMといったハードウェアの情報を取得したいと考えています。
FileMakerからWMIを送信、またその返り値を取得することは可能なのでしょうか。
※WMIを使用してハードウェア情報を取得する事自体は成功しています。
WMIについては無知ですが、
目的のWMIを呼び出す「WSHスクリプト」をHTA構文形式でFM内生成し、これを引数にMSHTA.exeあて「Eventを送信」する、
とかで出来ないかしら?
また、戻り値の取得は、クリップボード経由にするのが簡便な方法でしょう。
Offline
以下の様なHTMLを書く フィールドに入力
(1)
フィールド内容のエクスポート:ファイルを自動的に開く でhtaを実行
HTAファイル「xxxxx.hta」とか、名前は任意。
クリップボード経由の場合は、「スクリプト:貼り付け」でフィールドへ
または、
FMP12いこうであれば、FMPプロトコルでフィールドへ設定
例:
スクリプト:serrersult
フィールド設定[ フィールド名 ; $result ]
※FMPプロトコルの場合は、IEが開いてしまいます。
(2)
WEBビューアの設定 で以下のHTMLを設定することで実行することもできます。
値の取得は、上記と同じです。
※ただし、この場合、Activexのセキュリティー警告ダイアログがでます。(消せなさそうです)
※※クリップボード経由の場合は、
location.href = "fmp://$/script?script=setvalue&$result=" & sMesStr
は無効に(または、削除)してください。
Hiroさんの言う MSHTA.exeあて「Eventを送信」 にしたらスマートになりそうかもしれませんが、引数渡しの場合の記述が不明.....。
<html>
<head>
<meta charset='UTF-8'>
<meta http-equiv=\"X-UA-Compatible\" content=\"IE=8 ; IE=9 ; IE=10\" />
<script type='text/vbscript'>
'参照:http://www.wmifun.net/sample/win32_processor.html
Option Explicit
'WMIにて使用する各種オブジェクトを定義・生成する。
Dim oClassSet
Dim oClass
Dim oLocator
Dim oService
Dim sMesStr
'ローカルコンピュータに接続する。
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
'クエリー条件をWQLにて指定する。
Set oClassSet = oService.ExecQuery("Select * From Win32_Processor")
'コレクションを解析する。
For Each oClass In oClassSet
sMesStr = sMesStr & "種類:" & oClass.Description & vbCrLf & _
"名前:" & oClass.Name & vbCrLf & _
"製造元:" & oClass.Manufacturer & vbCrLf & _
"現在の周波数:" & CStr(oClass.CurrentClockSpeed) & vbCrLf & _
"最大周波数:" & CStr(oClass.MaxClockSpeed) & vbCrLf & _
"L2キャッシュサイズ:" & CStr(oClass.L2CacheSize) & vbCrLf & vbCrLf
Next
'使用した各種オブジェクトを後片付けする。
Set oClassSet = Nothing
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing
'MsgBox("Processorに関する情報です。" & vbCrLf & vbCrLf & sMesStr)
'クリップボード
Call clipboardData.setData( "Text", sMesStr )
'FMPプロトコル
location.href = "fmp://$/script?script=setvalue&$result=" & sMesStr
</script>
</head>
<body>
</body>
</html>
Offline
プラグインを使うとカンタンな記述でCPUの情報等の取得ができます。
FileMakerのフィールドに記述した「PowerShell」を実行し、戻り値を取得するプラグインです。
ScriptMakerPS | FileMaker Plugin for Windows : https://sites.google.com/site/scriptmakerps/
例:CPUの名前を取得
フィールド設定 [SMPS::Result; SMPS_Exe( "$obj_CPU = Get-WMIObject Win32_Processor;$obj_CPU.Name;" )]
例:CPUの名前を取得|リモートPCの場合
フィールド設定 [SMPS::Result; SMPS_Exe( "$obj_CPU = Get-WMIObject Win32_Processor -ComputerName 192.168.*.*;$obj_CPU.Name;" )]
Offline
フィールド内容のエクスポート *.vbs でもいけますね!
以下の様なVBScriptを書く フィールドに入力
フィールド内容のエクスポート:ファイルを自動的に開く でvbsを実行
VBSファイル「script.vbs」とか、名前は任意。
クリップボード経由の場合は、*.vbs 実行後「スクリプト:貼り付け」でフィールドへ
または、
FMP12以降であれば、FMPプロトコルでフィールドへ設定
例:
受け側スクリプト
スクリプト:setrersult
フィールド設定[ フィールド名 ; $result ]
IEも隠せます。
InternetExplorer セキュリティー ダイアログが出ますが、
「今後、このプログラムに関する警告を表示しない」にチェックすれば、以後、出ません。
'参考:http://www.wmifun.net/sample/win32_processor.html
Option Explicit
Dim oClassSet
Dim oClass
Dim oLocator
Dim oService
Dim sMesStr
Dim objIE
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
Set oClassSet = oService.ExecQuery("Select * From Win32_Processor")
For Each oClass In oClassSet
sMesStr = sMesStr & "種類:" & oClass.Description & vbCrLf & _
"名前:" & oClass.Name & vbCrLf & _
"製造元:" & oClass.Manufacturer & vbCrLf & _
"現在の周波数:" & CStr(oClass.CurrentClockSpeed) & vbCrLf & _
"最大周波数:" & CStr(oClass.MaxClockSpeed) & vbCrLf & _
"L2キャッシュサイズ:" & CStr(oClass.L2CacheSize) & vbCrLf & vbCrLf
Next
Set oClassSet = Nothing
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing
MsgBox("Processorに関する情報です。" & vbCrLf & vbCrLf & sMesStr)
'Call clipboardData.setData( "Text", sMesStr )
'location.href = "fmp://$/script?script=setvalue&$result=" & sMesStr
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate2 "fmp://$/script?script=setvalue&$result=" & sMesStr
objIE.Visible = false
Set objIE =Nothing
Offline
皆さん回答ありがとうございます。
いろいろな方法があるもんですね。
一番運用しやすい方法を探したいと思います。
Pages: 1
[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 517.05 KiB (Peak: 521.96 KiB) ]