запуск приложения
Имеется довольно большая сетка комп*ютеров, возможно ли с помощью скрипта запустить програму только на тех пк, где есть определенное количество оперативки, допустим больше 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
|
Цитата:
Цитата Iska
("SELECT TotalPhysicalMemory FROM Win32_ComputerSystem") »
|
всегда прописывать win32 или для x64 нужно заменять на win64 ?
|
Цитата:
Цитата null999
всегда прописывать win32 или для x64 нужно заменять на win64 ? »
|
Не нужно. Win32_ComputerSystem — это имя класса: Win32_ComputerSystem class (Windows), где Win32_ является частью имени.
|
cпасибо, работает, вот только можно ли убрать окно, которое после удачного запуска появляется?что бы закрить ужно каждый раз "ок" кликать
|
Цитата:
Цитата null999
которое после удачного запуска появляется?что бы закрить ужно каждый раз "ок" кликать »
|
Закомментируйте строку:
Код:
'WScript.Echo "Success execute. PID: [" & CStr(lngProcessID) & "]."
|
работает, спасибо
и подскажите еще, как так сделать с видеокартой
|
Цитата:
Цитата null999
и подскажите еще, как так сделать с видеокартой »
|
А что с видеокартой?!
|
проверять, есть ли там допустим 512мб?
на что тогда поменять TotalPhysicalMemory?
|
Цитата:
Цитата null999
проверять, есть ли там допустим 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 существуют и иные возможности по удалённой работе.
|
большое спасибо за помощь
|
Время: 09:04.
© OSzone.net 2001-