初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-12-17 18:26:31

かびりあん
Guest

PC情報(WMI)の取得

FileMakerにて、PCの管理を行いたいと思っています。
ホスト名を入力してボタンを押すと、そのPCのCPUやRAMといったハードウェアの情報を取得したいと考えています。

FileMakerからWMIを送信、またその返り値を取得することは可能なのでしょうか。
※WMIを使用してハードウェア情報を取得する事自体は成功しています。

#2 2014-12-18 00:35:47

Hiro
Member

Re: PC情報(WMI)の取得

WMIについては無知ですが、
目的のWMIを呼び出す「WSHスクリプト」をHTA構文形式でFM内生成し、これを引数にMSHTA.exeあて「Eventを送信」する、
とかで出来ないかしら?
また、戻り値の取得は、クリップボード経由にするのが簡便な方法でしょう。

Offline

#3 2014-12-18 02:37:42

qb_dp
Member

Re: PC情報(WMI)の取得

以下の様な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

#4 2014-12-18 02:47:14

qb_dp
Member

Re: PC情報(WMI)の取得

プラグインを使うとカンタンな記述で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

#5 2014-12-18 18:44:49

qb_dp
Member

Re: PC情報(WMI)の取得

フィールド内容のエクスポート *.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

#6 2014-12-19 09:22:06

かびりあん
Guest

Re: PC情報(WMI)の取得

皆さん回答ありがとうございます。
いろいろな方法があるもんですね。
一番運用しやすい方法を探したいと思います。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 518.23 KiB (Peak: 523.14 KiB) ]