HSPでWMIの各種情報を取得(実行用スクリプトの生成)

1.概要

WMIの名前空間、クラス名とそのクラスに対応したプロパティの一覧および取得したプロパティから 実行用のVBScriptを 自動作成するスクリプトを作成しました。また、実行は、コマンドプロンプトより、cscriptから実行しますが、面倒なので 実行用のスクリプト作成と同時に実行確認が簡単にできるように実行確認用のバッチファイルも同時に作成して出力させています。


2.利用方法

利用方法は、HSPのスクリプトエディタよりpropgen.hspを実行します。
クラス名選択用のコンボボックスよりクラス名を選択します。そして、実行ボタンをクリックすれば、カレントディレクリに 3つのファイルが作成されます。
(例)Class Name : Win32_BIOSとした場合
    ・Win32_BIOS.txt (クラス名から取得したプロパティリスト)
    ・Win32_BIOS.vbs (WMI実行用のVBScript)
    ・Win32_BIOS.bat (上記の実行確認用バッチファイル)
3.ソースコード

ソースコードは、下記の通りです。開発言語は、HSP言語(HSP3.51)で作成しています。 WMIの拡張クラスに対応したプロパティ一覧の取得と実行用スクリプト(VBScript)の生成および実行確認用のバッチファイルの生成と出力に 対応しています。
propgen.hsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
  ;***** クラスに対応したプロパティ一覧取得と実行用スクリプトの生成  (propgen.hsp) *****
  #packopt type 0
  #packopt name "propgen"
  #packopt runtime "hsprt"
  #packopt manifest "app.manifest"
  #packopt icon "sample.ico"
  #packopt hide 1
   
  #module
    #deffunc SendVBSSave str VBSName
    notesel SendVBS@
    notesave dir_cur+"¥¥"+VBSName
    return
  #global
 
  #uselib "kernel32.dll"
  #cfunc GetEnvironmentVariable "GetEnvironmentVariableA" var,var,int
 
  #define MAX_PATH      260
  #define EM_SETMARGINS       $000000D3 
  #define EC_LEFTMARGIN       $00000001 
  #define EC_RIGHTMARGIN      $00000002 
  #define CB_GETLBTEXT        $00000148 
  #define ctype MAKELONG(%1,%2) (%1&$ffff|(%2<<16)) 
  #const  WshHide   0
 
  screen 0,640,480,0,ginfo_dispx-640>>1,ginfo_dispy-480>>1
  onexit *owari
  title "WMI Property List Getting And exec VBScript Generater"
  sdim cp,MAX_PATH+2
  ev="Comspec"
  ret=GetEnvironmentVariable(ev,cp,MAX_PATH)
  if ret==0 : stop
  sdim SendVBS,1024 : sdim GenVBS,1024 : sdim work : sdim comstr,64 : dim comname,5000
  font "Meiryo UI",12 : objmode 2
  color 0,0,255 : pos 30,12 : mes "Class Name"
 
  ;***** comboxにクラス名をセットする *****
  comname  = "Win32_1394Controller¥nWin32_1394ControllerDevice¥nWin32_Account¥nWin32_AccountSID¥nWin32_ACE¥nWin32_ActionCheck¥n"
  comname += "Win32_ActiveRoute¥n32_AllocatedResource¥nWin32_ApplicationCommandLine¥nWin32_ApplicationService¥nWin32_AssociatedProcessorMemory¥n"
  comname += "Win32_AutochkSetting¥nWin32_BaseBoard¥nWin32_BaseService¥nWin32_Battery¥nWin32_Binary¥nWin32_BindImageAction¥nWin32_BIOS¥n"
  comname += "Win32_BootConfiguration¥nWin32_Bus¥nWin32_CacheMemory¥nWin32_CDROMDrive¥nWin32_CheckCheck¥nWin32_CIMLogicalDeviceCIMDataFile¥n"
  comname += "Win32_ClassicCOMApplicationClasses¥nWin32_ClassicCOMClass¥nWin32_ClassicCOMClassSetting¥nWin32_ClassicCOMClassSettings¥n"
  comname += "Win32_ClassInfoAction¥nWin32_ClientApplicationSetting¥nWin32_ClusterShare¥nWin32_CodecFile¥nWin32_CollectionStatistics¥n"
  comname += "Win32_COMApplication¥nWin32_COMApplicationClasses¥nWin32_COMApplicationSettings¥nWin32_COMClass¥nWin32_ComClassAutoEmulator¥n"
  comname += "Win32_ComClassEmulator¥nWin32_CommandLineAccess¥nWin32_ComponentCategory¥nWin32_ComputerShutdownEvent¥nWin32_ComputerSystem¥n"
  comname += "Win32_ComputerSystemEvent¥nWin32_ComputerSystemProcessor¥nWin32_ComputerSystemProduct¥nWin32_COMSetting¥nWin32_Condition¥n"
  comname += "Win32_ConnectionShare¥nWin32_ControllerHasHub¥nWin32_CreateFolderAction¥nWin32_CurrentProbe¥nWin32_CurrentTime¥nWin32_DCOMApplication¥n"
  comname += "Win32_DCOMApplicationAccessAllowedSetting¥nWin32_DCOMApplicationLaunchAllowedSetting¥nWin32_DCOMApplicationSetting¥n"
  comname += "Win32_DefragAnalysis¥nWin32_DependentService¥nWin32_Desktop¥nWin32_DesktopMonitor¥nWin32_DeviceBus¥nWin32_DeviceChangeEvent¥n"
  comname += "Win32_DeviceMemoryAddress¥nWin32_DeviceSettings¥nWin32_DfsNode¥nWin32_DfsNodeTarget¥nWin32_DfsTarget¥nWin32_Directory¥n"
  comname += "Win32_DirectorySpecification¥nWin32_DiskDrive¥nWin32_DiskDrivePhysicalMedia¥nWin32_DiskDriveToDiskPartition¥nWin32_DiskPartition¥n"
  comname += "Win32_DiskQuota¥nWin32_DisplayConfiguration¥nWin32_DisplayControllerConfiguration¥nWin32_DMAChannel¥nWin32_DriverForDevice¥n"
  comname += "Win32_DuplicateFileAction¥nWin32_Environment¥nWin32_EnvironmentSpecification¥nWin32_ExtensionInfoAction¥nWin32_Fan¥nWin32_FileSpecification¥n"
  comname += "Win32_FolderRedirection¥nWin32_FolderRedirectionHealth¥nWin32_FolderRedirectionHealthConfiguration¥nWin32_FolderRedirectionUserConfiguration¥n"
  comname += "Win32_FontInfoAction¥nWin32_Group¥nWin32_GroupInDomain¥nWin32_GroupUser¥nWin32_HeatPipe¥nWin32_IDEController¥nWin32_IDEControllerDevice¥n"
  comname += "Win32_ImplementedCategory¥nWin32_InfraredDevice¥nWin32_IniFileSpecification¥nWin32_InstalledProgramFramework¥nWin32_InstalledSoftwareElement¥n"
  comname += "Win32_InstalledStoreProgram¥nWin32_InstalledWin32Program¥Win32_IP4PersistedRouteTable¥nWin32_IP4RouteTable¥nWin32_IP4RouteTableEvent¥n"
  comname += "Win32_IRQResource¥nWin32_JobObjectStatus¥nWin32_Keyboard¥nWin32_LaunchCondition¥nWin32_LoadOrderGroup¥nWin32_LoadOrderGroupServiceDependencies¥n"
  comname += "Win32_LoadOrderGroupServiceMembers¥nWin32_LocalTime¥nWin32_LoggedOnUser¥nWin32_LogicalDisk¥nWin32_LogicalDiskRootDirectory¥nWin32_LogicalDiskToPartition¥n"
  comname += "Win32_LogicalFileAccess¥nWin32_LogicalFileAuditing¥nWin32_LogicalFileGroup¥nWin32_LogicalFileOwner¥nWin32_LogicalFileSecuritySetting¥n"
  comname += "Win32_LogicalProgramGroup¥nWin32_LogicalProgramGroupDirectory¥nWin32_LogicalProgramGroupItem¥nWin32_LogicalProgramGroupItemDataFile¥n"
  comname += "Win32_LogicalShareAccess¥nWin32_LogicalShareAuditing¥nWin32_LogicalShareSecuritySetting¥nWin32_LogonSession¥nWin32_LogonSessionMappedDisk¥n"
  comname += "Win32_LUID¥nWin32_LUIDandAttributes¥nWin32_ManagedSystemElementResource¥nWin32_MappedLogicalDisk¥nWin32_MemoryArray¥nWin32_MemoryArrayLocation¥n"
  comname += "Win32_MemoryDevice¥nWin32_MemoryDeviceArray¥nWin32_MemoryDeviceLocation¥nWin32_MethodParameterClass¥nWin32_MIMEInfoAction¥nWin32_ModuleLoadTrace¥n"
  comname += "Win32_ModuleTrace¥nWin32_MotherboardDevice¥nWin32_MountPoint¥nWin32_MoveFileAction¥nWin32_MSIResource¥nWin32_NamedJobObject¥n"
  comname += "Win32_NamedJobObjectActgInfo¥nWin32_NamedJobObjectLimit¥nWin32_NamedJobObjectLimitSetting¥nWin32_NamedJobObjectProcess¥nWin32_NamedJobObjectSecLimit¥n"
  comname += "Win32_NamedJobObjectSecLimitSetting¥nWin32_NamedJobObjectStatistics¥nWin32_NetworkAdapter¥nWin32_NetworkAdapterConfiguration¥n"
  comname += "Win32_NetworkAdapterSetting¥nWin32_NetworkClient¥nWin32_NetworkConnection¥nWin32_NetworkLoginProfile¥nWin32_NetworkProtocol¥nWin32_NTDomain¥n"
  comname += "Win32_NTEventlogFile¥nWin32_NTLogEvent¥nWin32_NTLogEventComputer¥nWin32_NTLogEventLog¥nWin32_NTLogEventUser¥nWin32_ODBCAttribute¥n"
  comname += "Win32_ODBCDataSourceAttribute¥nWin32_ODBCDataSourceSpecification¥nWin32_ODBCDriverAttribute¥nWin32_ODBCDriverSoftwareElement¥n"
  comname += "Win32_ODBCDriverSpecification¥nWin32_ODBCSourceAttribute¥nWin32_ODBCTranslatorSpecification¥nWin32_OfflineFilesHealth¥nWin32_OnBoardDevice¥n"
  comname += "Win32_OperatingSystem¥nWin32_OperatingSystemAutochkSetting¥nWin32_OperatingSystemQFE¥nWin32_OptionalFeature¥nWin32_OSRecoveryConfiguration¥n"
  comname += "Win32_PageFile¥nWin32_PageFileElementSetting¥nWin32_PageFileSetting¥nWin32_PageFileUsage¥nWin32_ParallelPort¥nWin32_Patch¥nWin32_PatchFile¥n"
  comname += "Win32_PatchPackage¥nWin32_PCMCIAController¥nWin32_PhysicalMedia¥nWin32_PhysicalMemory¥nWin32_PhysicalMemoryArray¥nWin32_PhysicalMemoryLocation¥n"
  comname += "Win32_PingStatus¥nWin32_PNPAllocatedResource¥nWin32_PnPDevice¥nWin32_PnPDeviceProperty¥nWin32_PnPDevicePropertyBinary¥nWin32_PnPDevicePropertyBoolean¥n"
  comname += "Win32_PnPDevicePropertyBooleanArray¥nWin32_PnPDevicePropertyDateTime¥nWin32_PnPDevicePropertyReal32¥nWin32_PnPDevicePropertyReal32Array¥n"
  comname += "Win32_PnPDevicePropertyReal64¥nWin32_PnPDevicePropertyReal64Array¥nWin32_PnPDevicePropertySecurityDescriptor¥nWin32_PnPDevicePropertySecurityDescriptorArray¥n"
  comname += "Win32_PnPDevicePropertySint16¥nWin32_PnPDevicePropertySint16Array¥nWin32_PnPDevicePropertySint32¥nWin32_PnPDevicePropertySint32Array¥n"
  comname += "Win32_PnPDevicePropertySint64¥nWin32_PnPDevicePropertySint8¥nWin32_PnPDevicePropertySint8Array¥nWin32_PnPDevicePropertyString¥n"
  comname += "Win32_PnPDevicePropertyStringArray¥nWin32_PnPDevicePropertyUint16¥nWin32_PnPDevicePropertyUint16Array¥nWin32_PnPDevicePropertyUint32¥n"
  comname += "Win32_PnPDevicePropertyUint32Array¥nWin32_PnPDevicePropertyUint64¥nWin32_PnPDevicePropertyUint8¥nWin32_PnPEntity¥nWin32_PnPSignedDriver¥n"
  comname += "Win32_PnPSignedDriverCIMDataFile¥nWin32_PointingDevice¥nWin32_PortableBattery¥nWin32_PortConnector¥nWin32_PortResource¥nWin32_POTSModem¥n"
  comname += "Win32_POTSModemToSerialPort¥nWin32_PowerManagementEvent¥nWin32_Printer¥nWin32_PrinterConfiguration¥nWin32_PrinterController¥nWin32_PrinterDriver¥n"
  comname += "Win32_PrinterDriverDll¥nWin32_PrinterSetting¥nWin32_PrinterShare¥nWin32_PrintJob¥nWin32_PrivilegesStatus¥nWin32_Process¥nWin32_Processor¥n"
  comname += "Win32_ProcessStartTrace¥nWin32_ProcessStartup¥nWin32_ProcessStopTrace¥nWin32_ProcessTrace¥nWin32_Product¥nWin32_ProductCheck¥nWin32_ProductResource¥n"
  comname += "Win32_ProductSoftwareFeatures¥nWin32_ProgIDSpecification¥nWin32_ProgramGroupContents¥nWin32_ProgramGroupOrItem¥nWin32_Property¥n"
  comname += "Win32_ProtocolBinding¥nWin32_PublishComponentAction¥nWin32_QuickFixEngineering¥nWin32_QuotaSetting¥nWin32_Refrigeration¥nWin32_Registry¥n"
  comname += "Win32_RegistryAction¥nWin32_Reliability¥nWin32_ReliabilityRecords¥nWin32_ReliabilityStabilityMetrics¥nWin32_RemoveFileAction¥n"
  comname += "Win32_RemoveIniAction¥nWin32_ReserveCost¥nWin32_RoamingProfileBackgroundUploadParams¥nWin32_RoamingProfileMachineConfiguration¥n"
  comname += "Win32_RoamingProfileSlowLinkParams¥nWin32_RoamingProfileUserConfiguration¥nWin32_RoamingUserHealthConfiguration¥nWin32_ScheduledJob¥n"
  comname += "Win32_SCSIController¥nWin32_SCSIControllerDevice¥nWin32_SecurityDescriptor¥nWin32_SecurityDescriptorHelper¥nWin32_SecuritySetting¥n"
  comname += "Win32_SecuritySettingAccess¥nWin32_SecuritySettingAuditing¥nWin32_SecuritySettingGroup¥nWin32_SecuritySettingOfLogicalFile¥n"
  comname += "Win32_SecuritySettingOfLogicalShare¥nWin32_SecuritySettingOfObject¥nWin32_SecuritySettingOwner¥nWin32_SelfRegModuleAction¥nWin32_SerialPort¥n"
  comname += "Win32_SerialPortConfiguration¥nWin32_SerialPortSetting¥nWin32_ServerConnection¥nWin32_ServerSession¥nWin32_Service¥nWin32_ServiceControl¥n"
  comname += "Win32_ServiceSpecification¥nWin32_ServiceSpecificationService¥nWin32_Session¥nWin32_SessionConnection¥nWin32_SessionProcess¥n"
  comname += "Win32_SessionResource¥nWin32_SettingCheck¥nWin32_ShadowBy¥nWin32_ShadowContext¥nWin32_ShadowCopy¥nWin32_ShadowDiffVolumeSupport¥n"
  comname += "Win32_ShadowFor¥nWin32_ShadowOn¥nWin32_ShadowProvider¥nWin32_ShadowStorage¥nWin32_ShadowVolumeSupport¥nWin32_Share¥nWin32_ShareToDirectory¥n"
  comname += "Win32_ShortcutAction¥nWin32_ShortcutFile¥nWin32_ShortcutSAP¥nWin32_SID¥nWin32_SIDandAttributes¥nWin32_SMBIOSMemory¥nWin32_SoftwareElement¥n"
  comname += "Win32_SoftwareElementAction¥nWin32_SoftwareElementCheck¥nWin32_SoftwareElementCondition¥nWin32_SoftwareElementResource¥nWin32_SoftwareFeature¥n"
  comname += "Win32_SoftwareFeatureAction¥nWin32_SoftwareFeatureCheck¥nWin32_SoftwareFeatureParent¥nWin32_SoftwareFeatureSoftwareElements¥n"
  comname += "Win32_SoundDevice¥nWin32_StartupCommand¥nWin32_SubDirectory¥nWin32_SubSession¥nWin32_SystemAccount¥nWin32_SystemBIOS¥nWin32_SystemBootConfiguration¥n"
  comname += "Win32_SystemConfigurationChangeEvent¥nWin32_SystemDesktop¥nWin32_SystemDevices¥nWin32_SystemDriver¥nWin32_SystemDriverPNPEntity¥n"
  comname += "Win32_SystemEnclosure¥nWin32_SystemLoadOrderGroups¥nWin32_SystemMemoryResource¥nWin32_SystemNetworkConnections¥nWin32_SystemOperatingSystem¥n"
  comname += "Win32_SystemPartitions¥nWin32_SystemProcesses¥nWin32_SystemProgramGroups¥nWin32_SystemResources¥nWin32_SystemServices¥nWin32_SystemSetting¥n"
  comname += "Win32_SystemSlot¥nWin32_SystemSystemDriver¥nWin32_SystemTimeZone¥nWin32_SystemTrace¥nWin32_SystemUsers¥nWin32_TapeDrive¥nWin32_TCPIPPrinterPort¥n"
  comname += "Win32_TemperatureProbe¥nWin32_Thread¥nWin32_ThreadStartTrace¥nWin32_ThreadStopTrace¥nWin32_ThreadTrace¥nWin32_TimeZone¥nWin32_TokenGroups¥n"
  comname += "Win32_TokenPrivileges¥nWin32_Trustee¥nWin32_TypeLibraryAction¥nWin32_USBController¥nWin32_USBControllerDevice¥nWin32_USBHub¥n"
  comname += "Win32_UserAccount¥nWin32_UserDesktop¥nWin32_UserInDomain¥nWin32_UserProfile¥nWin32_UserStateConfigurationControls¥nWin32_UTCTime¥n"
  comname += "Win32_VideoConfiguration¥nWin32_VideoController¥nWin32_VideoSettings¥nWin32_VoltageProbe¥nWin32_Volume¥nWin32_VolumeChangeEvent¥n"
  comname += "Win32_VolumeQuota¥nWin32_VolumeQuotaSetting¥nWin32_VolumeUserQuota¥nWin32_WinSAT¥nWin32_WMIElementSetting¥nWin32_WMISetting¥n"
 
  objsize 300,14 : pos  107,8 : combox Selstr,100,comname
  objsize 46,24 : pos 420,8 : button "実行", *generate
  pos 0,35: mesbox SendVBS, ginfo_winx, ginfo_winy-35,5
  sendmsg objinfo(2,2), EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN,MAKELONG(5,5)
  stop
 
*generate
  ;***** 選択コンボボックスの文字列取得 *****
  sendmsg objinfo(0,2), CB_GETLBTEXT, Selstr, varptr(comstr)
  ;***** Class Nameを設定する
  classname = comstr
  mode = 0 : SendVBS = ""
  gosub *header
  gosub *wmipropbody
  gosub *footer
 
  ;***** dir_curの場所へセーブする (実行用一時保存スクリプト) *****
  SendVBSSave "proplist.vbs"
   
  ;***** 実行してプロパティリストを出力する *****
  wait 50
  title "WMI Property List Getting ・・・ しばらくお待ち下さい。"
  newcom WshShell, "WScript.Shell"
  WshShell->"Run" cp+" /c " + "cscript proplist.vbs > "+classname+".txt" ,WshHide, 1
  wait 100
  ;***** 出力したプロパティリストファイルを確認 *****
  exist classname+".txt"
  if strsize==-1 : dialog ""+classname+".txt"+ "の出力に失敗しました。" : end
  notesel GenVBS
  noteload classname+".txt"
   
  ;***** プロパティリストより実行用VBScriptを自動作成 *****
  title "WMI exec VBScript Generate"
  mode = 1
  gosub *header
  gosub *wmibodyhead
  notepos=0 : count=0
  repeat notemax
    getstr work,GenVBS,notepos : notepos+=strsize
    count++
    if count<4 : continue
    if work == "" {
      ;SendVBS += " Wscript.Echo  ¥"Not Found Property¥"" + "¥n"
      break
    }
    SendVBS += "  Wscript.Echo " + "¥"" + work + ": ¥"" + " & objItem." + work + "¥n"
  loop
  gosub *wmibodyfoot
  gosub *footer
  ;***** 正しく作成されたか確認 *****
  title "WMI exec VBScript Completion"
  objprm 2,SendVBS
 
  ;***** 作成されたVBScriptをセーブする *****
 
  ;*************************************************
  ; 【注意】作成されたVBSはコマンドプロンプトより
  ;         cscript ファイル名 で実行して下さい。
  ;*************************************************
 
  fname=classname+".vbs"
  SendVBSSave fname
 
  ;***** 実行確認用のバッチファイルを作成 *****
  gosub *batchgen
  fname = classname + ".bat"
  SendVBSSave fname
  delcom WshShell
  stop
 
*owari
  if vartype(WshShell)==6 {
    if varuse(WshShell)==1 : delcom WshShell
  }
  end
 
*header
  SendVBS=""
  if mode=0 {
    SendVBS += "'***** " + classname + "関連のプロパティ一覧取得 (proplist.vbs) *****¥n"
  }
  if mode=1 {
    SendVBS += "'***** " + classname + "関連の情報取得 (" + classname + ".vbs) *****¥n"
  }
  SendVBS += "On Error Resume Next¥n"
  SendVBS += "¥n"
  SendVBS += "Dim strComputer¥n"
  SendVBS += "Dim objWMIService¥n"
  SendVBS += "Dim colItems¥n"
  SendVBS += "Dim objItem¥n"
  SendVBS += "Dim item¥n"
  if mode=1 {
    SendVBS += "Dim nMax¥n"
  }
  if mode=0 {
    SendVBS += "Dim ret¥n"
  }
 
  SendVBS += "¥n"
 
  SendVBS += "strComputer = ¥"¥"¥n"
  SendVBS += "if strComputer = ¥"¥" then¥n"
  SendVBS += "  strComputer = ¥""¥n"
  SendVBS += "end if¥n"
  SendVBS += "¥n"
  SendVBS += "Set objWMIService = GetObject(¥"winmgmts:¥¥¥¥¥" & strComputer & ¥"¥¥root¥¥cimv2¥")¥n"
  SendVBS += "Set colItems = objWMIService.ExecQuery(¥"" + "Select * from " + classname  + "¥",,48)¥n"
  SendVBS += "¥n"
  return
 
*wmipropbody
  SendVBS += "For Each objItem In colItems¥n"
  SendVBS += "  For Each item In objItem.Properties_ ¥n"
  SendVBS += "    ret = ret &  item.Name & vbCrLf¥n"
  SendVBS += "  Next¥n"
  SendVBS += "  Exit For¥n"
  SendVBS += "Next¥n"
  SendVBS += "¥n"
  SendVBS += "WScript.Echo ret¥n"
  return
 
*wmibodyhead
  SendVBS += "For Each objItem in colItems¥n"
  SendVBS += "  if nCnt > nMax then¥n"
  SendVBS += "    Exit For¥n"
  SendVBS += "  end if¥n"
  return
 
*wmibodyfoot
  SendVBS += "  Wscript.Echo vbCrLf¥n"
  SendVBS += "  nCnt = nCnt + 1¥n"
  SendVBS += "Next¥n"
  return
 
*footer
  SendVBS += "¥n"
  SendVBS += "Set strComputer = Nothing¥n"
  SendVBS += "Set objWMIService = Nothing¥n"
  SendVBS += "Set colItems = Nothing¥n"
  SendVBS += "Set objItem = Nothing¥n"
  SendVBS += "Set item = Nothing¥n"
  if mode=1 {
    SendVBS += "Set nMax = Nothing¥n"
  }
  if mode=0 {
    SendVBS += "Set ret = Nothing¥n"
  }
  return
 
*batchgen
  ;***** 実行確認用バッチ(bat)ファイル作成 *****
  SendVBS  = "@echo off¥n"
  SendVBS  += "setlocal¥n"
  SendVBS  += "cd /d %~dp0¥n"
  SendVBS  += "echo.¥n"
  SendVBS  += "echo.¥n"
  SendVBS  += "echo ***********************************************************¥n"
  SendVBS  += "echo.¥n"
  SendVBS  += "echo" + "        " + classname + "用バッチファイル¥n"
  SendVBS  += "echo.¥n"
  SendVBS  += "echo.¥n"
  SendVBS  += "echo ***********************************************************¥n"
  SendVBS  += "echo.¥n"
  SendVBS  += "echo.¥n"
  SendVBS  += "¥n"
  SendVBS  += "rem ***** 実行開始 *****¥n"
  SendVBS  += "cscript  " + classname + ".vbs > " + classname + "実行結果.txt¥n"
  SendVBS  += "¥n"
  SendVBS  += "echo 処理が完了しました。何かキーを押してください。¥n
  SendVBS  += "echo.¥n"
  SendVBS  += "¥n"
  SendVBS  += "pause >nul¥n"
  SendVBS  += "endlocal¥n"
  SendVBS  += "exit¥n"
  return

4.ダウンロード

提供するソースコードのライセンスは、CC0 (クレジット表示不要、改変可、商用可) とします。自由に利用して頂いてかまいません。 尚、データの取得やプログラム実行において損害等が生じた場合は、筆者は一切の責任も負いません。全て自己責任でお願いします。

「プロパティ一覧取得と実行用スクリプトの生成(propgen)」は、下記よりダウンロードして下さい。「win32拡張クラスの一覧の作成 (win32ex)」も同梱 しています。

ダウンロード

■関連記事
・HSPでWMIの各種情報を取得(名前空間、クラス名、プロパティ)

コメント

このブログの人気の投稿

Excelアドインで日本語形態素解析

階層構造JSONファイルの作成

キーボードのキーコードの一覧表