Avatar billede fyrrebakken Nybegynder
05. oktober 2002 - 10:58 Der er 4 kommentarer og
1 løsning

Hvilket OS sammen med script

Jeg skal ha' lavet et script til at køre hotfixes på henholdsvis win98, win ME og win2k.

Hvordan laver laver jeg scriptet så det kører de forskellige hotfixes der KUN passer til det enkelte OS?
Avatar billede doc404 Novice
05. oktober 2002 - 11:21 #1
Fandt denne...

OPTION EXPLICIT

'************************************************
' Main code
'************************************************
On Error Resume Next

'Global variables
Dim shell
Dim strOS, strVerKey,strVersion,strLanguage
Dim sngWaitTime

'Pause for 2 second to wait for system to load script
sngWaitTime = Timer() + 2
Do
Loop While Timer() < sngWaitTime

'Create references to system objects (ddls)
Set Shell = CreateObject("WScript.Shell")

'Get language
strLanguage=Shell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SM_AccessoriesName")
If strLanguage="Accessories" Then
  strLanguage="English"
Else
  strLanguage="Non English"
End If

'Get Windows Version
strOS = shell.ExpandEnvironmentStrings("%OS%")
If strOS="Windows_NT" Then
  strVerKey="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
  strVersion=Shell.regread(strVerKey & "ProductName") & " " & Shell.regread(strVerKey & "CurrentVersion") & "." & Shell.regread(strVerkey & "CurrentBuildNumber")
Else
  strVerKey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\"
  strVersion=Shell.regread(strVerKey & "ProductName") & " " & Shell.regread(strVerKey & "VersionNumber")
End if
MsgBox strLanguage & " " & strVersion

'Cleanup
set Shell=nothing
Avatar billede fyrrebakken Nybegynder
05. oktober 2002 - 12:17 #2
OK tak - prøver det - og vender tilbage :)
Avatar billede fyrrebakken Nybegynder
05. oktober 2002 - 18:22 #3
Hvor har du fundet det?
Avatar billede maximus25 Nybegynder
06. oktober 2004 - 14:44 #4
jeg havde dette script liggende.

Det viser
maskinenavn
Brugerinfo
operativ system
servicepack version
model
serienummer

Du kan bare fjerne de elementer du ikke skal bruge.

for at checke om på operativ systemet kunne du indsætte følgende statement.

if OS = "Microsoft Windows 2000 Proffesionel" then

et eller andet

end if





Her er scriptet:




strComputer = InputBox("Enter the name of the computer you wish to query")

winmgmt1 = "winmgmts:{impersonationLevel=impersonate}!//"& strComputer &""

if strComputer = "" then
Msgbox"Du skal indtaste et maskinenummer"
else

Set SystemSet = GetObject( winmgmt1 ).InstancesOf ("Win32_Product")


Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")



Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
OS = OS & objOperatingSystem.Caption


winmgmt1 = "winmgmts:{impersonationLevel=impersonate}!//"& strComputer &""
Set SPSet = GetObject( winmgmt1 ).InstancesOf ("Win32_OperatingSystem")
Set UserSet = GetObject( winmgmt1 ).InstancesOf ("Win32_ComputerSystem")

'WScript.Echo winmgmt1

Set SNSet = GetObject( winmgmt1 ).InstancesOf ("Win32_BIOS")


for each Bios in GetObject( winmgmt1).InstancesOf ("win32_bios")
BiosSerial = BiosSerial & Bios.SerialNumber
   
for each User in UserSet
userList = userList &  user.username

for each SN in SNSet

For each SP in SPSet
Servicepack = Servicepack &  SP.CSDVersion



  Set sProperty = GetObject( winmgmt1 ).InstancesOf ("Win32_ComputerSystem")

    For Each sProperty in GetObject( winmgmt1).InstancesOf ("Win32_ComputerSystem")
model = model & DoCheckIfEmpty(sProperty.Model)


   
next
Next
Next
Next

next
next


for each System in SystemSet

    StrList = StrList & System.Name & Vbcrlf


Next

Wscript.Echo "Machine Name: " & vbTab & strComputer, vbCRLF & _
"User logged in: " & vbTab & userlist, vbCRLF & _
        "Operating System: " & vbTab & OS, vbCRLF & _   
        "Servicepack: "& vbTab & Servicepack, vbCRLF & _
        "Model: "& vbTab & vbTab & model, vbCRLF & _
          "Serialnumber: "& vbTab & BiosSerial
         

Function DoCheckIfEmpty(sValue)
    If IsNull(sValue) Then
        DoCheckIfEmpty = "Empty"
    Else
        DoCheckIfEmpty = sValue
    End If
End Function

Sub DoWrite(sText, sValue)
    WScript.Echo sText & DoFormat(sText), sValue
End Sub

Function DoFormat(sText)
    DoFormat = Space(28 - Len(sText)) & " = "
End Function

end if


Håber du kan bruge det:):)
Avatar billede maximus25 Nybegynder
06. oktober 2004 - 14:45 #5
ups det skulle have været et svar:):)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester