Показать полную графическую версию : [решено] запуск приложения
Имеется довольно большая сетка комп*ютеров, возможно ли с помощью скрипта запустить програму только на тех пк, где есть определенное количество оперативки, допустим больше 3ГБ ?
Можно:
Option Explicit
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx
Dim lngProcessID
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT TotalPhysicalMemory FROM Win32_ComputerSystem")
If CSng(objSWbemObjectEx.TotalPhysicalMemory) > 3 * 2 ^ 30 Then
If objSWbemServicesEx.Get("Win32_Process").Create("c:\Windows\System32\notepad.exe", "c:\Windows\System32", Null, lngProcessID) = 0 Then
WScript.Echo "Success execute. PID: [" & CStr(lngProcessID) & "]."
Else
WScript.Echo "Execute failure."
End If
End If
Next
Set objSWbemObjectEx = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
("SELECT TotalPhysicalMemory FROM Win32_ComputerSystem") »
всегда прописывать win32 или для x64 нужно заменять на win64 ?
всегда прописывать win32 или для x64 нужно заменять на win64 ? »
Не нужно. Win32_ComputerSystem — это имя класса: Win32_ComputerSystem class (Windows) (https://msdn.microsoft.com/en-us/library/aa394102(v=vs.85).aspx), где Win32_ является частью имени.
cпасибо, работает, вот только можно ли убрать окно, которое после удачного запуска появляется?что бы закрить ужно каждый раз "ок" кликать
которое после удачного запуска появляется?что бы закрить ужно каждый раз "ок" кликать »
Закомментируйте строку:
'WScript.Echo "Success execute. PID: [" & CStr(lngProcessID) & "]."
работает, спасибо
и подскажите еще, как так сделать с видеокартой
и подскажите еще, как так сделать с видеокартой »
А что с видеокартой?!
проверять, есть ли там допустим 512мб?
на что тогда поменять TotalPhysicalMemory?
проверять, есть ли там допустим 512мб?
на что тогда поменять TotalPhysicalMemory? »
Тут, пожалуй, придётся перейти на язык с более строгой типизацией (в VBScript нет подтипа прямо соответствующего беззнаковому целому UInt).
PowerShell:
Get-WmiObject -ComputerName "." -Class 'Win32_VideoController' -Property 'AdapterRAM' |`
ForEach-Object -Process {
if($_.AdapterRAM -gt 512Mb) {
$o__PARAMETERS = ([WMICLASS]'\\.\Root\CimV2:Win32_Process').Create('c:\Windows\System32\notepad.exe', 'c:\Windows\System32', $Null)
if($o__PARAMETERS.ReturnValue -eq 0) {
Write-Host "Success execute. PID: [$($o__PARAMETERS.ProcessId)]."
} else {
Write-Host "Execute failure."
}
}
}
У PowerShell помимо обращения к Wbem существуют и иные возможности по удалённой работе.
большое спасибо за помощь
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.