Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

skrypt inwentaryzacji


Rekomendowane odpowiedzi

Opublikowano

Witam
 
Potrzebuję pomocy, gdyż nie mogę sobie poradzić z przerobieniem skryptu, który znalazłem.
 
Potrzebuję sprawdzić modele komputerów (lista w pliku targets.txt), wszystko działa gdy sprawdzam dla jednego komputera jednak
gdy skrypt chcę wrzucić skrypt w pętlę to dostaję komunikat: Variable must be of type "Object"

Local $targets = @ScriptDir& "\targets.txt"

Local $log_name = "\skan.log"



$msgBox = MsgBox(4, "INWENTARYZATOR")



Example()



Func Example()



   If $msgBox = 7 Then

      exit

   EndIf





   ;Sprawdza czy istnieje plik z targetami txt

   If Not FileExists($targets) Then

      MsgBox($MB_SYSTEMMODAL, "", "Plik: targets.txt - nie istnieje !")

      Exit

   EndIf



   ;otwiera plik targets.txt i wrzuca go do pętli

   FileOpen($targets, 0)

   Global $arr[1000]

   ReDim $arr[_FileCountLines($targets)+1]



   For $i = 1 to _FileCountLines($targets)

       $line = FileReadLine($targets, $i)

       $arr[$i] = $line



      ; Sprawdza czy jest online

      Local $iPing = Ping($arr[$i], 250)

      If $iPing Then

         ; ONLINE

         Local $strComputer = $arr[$i]



         $colItems = ""

         $strComputer = "D390-PC"



         $Output=""

         $Output = $Output & "Computer: " & $strComputer  & @CRLF

         $Output = $Output & "==========================================" & @CRLF

         $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")

         $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _

                                                 "0x10" + "0x20")



         If IsObj($colItems) then

            For $objItem In $colItems

               $Output = $Output & "Vendor: " & $objItem.Vendor & @CRLF

               $Output = $Output & "SN: " & $objItem.IdentifyingNumber & @CRLF

               $Output = $Output & "Name: " & $objItem.Name & @CRLF

               $Output = $Output & "UUID: " & $objItem.UUID & @CRLF

             if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop

             $Output=""

            Next

         Else

            Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ComputerSystemProduct" )

         Endif



      Else

         ;OFFLINE - wpisuje informacje do loga

        _FileWriteLog(@ScriptDir & $log_name, $arr[$i]&" OFFLINE")

      EndIf

   Next





EndFunc   ;==>Example
 

Bardzo liczę na waszą pomoc, dzięki.

Opublikowano

Usun to:

$strComputer = "D390-PC"

A to faktycznie został śmieć jak czyściłem przed wklejeniem tutaj, jednak jak to usunę to pętla działa tylko raz (trzy komputery mam na liście) po czym dostaję zwrotkę Variable must be of type "Object"

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...