Jump to content

jachin

Member
  • Posts

    20
  • Joined

  • Last visited

  • Donations

    0.00 USD 
  • Country

    Australia

Posts posted by jachin

  1. Some more explaination would be good. I'm am looking at building an applications that can be used in a corporate environment by those who don't know all that much about unattended installs. As such I'd like to hide the complexity of scripting and batch files behind and intelligent GUI that can do all the hard work.

    The best way to do this would be with a .net app. Anything you can do in WSH/CMD can be done in C# and information about different builds can be stored in an Access or MSDE Database.

    Have a look at the image sectino of the Microsoft Solution Accelerator for Business Desktop Deployment @ http://www.microsoft.com/technet/desktopde...ddoverview.mspx

    It has a HTA that acts as a GUI and stores build information in a series of XML data files. It also has some smarts built in do installl line-of-business apps after installing windows with the ability to cope with reboots and dynamic application addition/removal. Microsoft have done a lot of nice work in this area, I think with very little effort you could write a very useful/powerful application to manage desktop deployment for corporate users.

  2. I tried only on Virtual PC yet...

    I am using Bartpe Netowrk Support Plugin (PeNetCfg)...

    I use BartPE in Virtual PC and Virtual Server on a weekly basis without any trouble at all. It is slightly slower than a physical machine but that is to be expected.

  3. Try this...

    GetMAC.vbs

    On Error Resume Next

    Const wbemFlagReturnImmediately = &h10
    Const wbemFlagForwardOnly = &h20
    Const ForReading = 1

    Dim fs
    Dim sh
    Dim nw
    Dim strMAC, strComp, strPID

    Set sh = CreateObject("WScript.Shell")
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set nw = CreateObject("WScript.Network")


    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapter " _
           & "Where NetConnectionID = " & _
           "'Local Area Connection'", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)

    For Each objItem in colItems
       strMACAddress = objItem.MACAddress
    Next

    'Open our text file and get the machine details
    Set objFile = fs.OpenTextFile("Machines.txt", ForReading, false)

    Do While objFile.AtEndOfStream <> True
    If inStr(objFile.ReadLine, strMACAddress) Then
     colDetails = Split(objFile.ReadLine, ",")
     writeini "sysprep.ini", "UserData", "ComputerName", colDetails(1)
     writeini "sysprep.ini", "UserData", "ProductKey", colDetails(2)
    Else
     objFile.Skipline
    End If
    Loop

    objFile.Close


    ' READINI ( file, section, item )
    ' file = path and name of ini file
    ' section = [Section] must not be in brackets
    ' item = the variable to read

    Function ReadIni(file, section, item)

    ReadIni = ""
    file = Trim(file)
    item = Trim(item)
    Set ini = fs.OpenTextFile( file, 1, False)

    Do While ini.AtEndOfStream = False
     line = ini.ReadLine
     line = Trim(line)
     If LCase(line) = "[" & LCase(section) & "]" Then
     line = ini.ReadLine
     line = Trim(line)
     Do While Left( line, 1) <> "["
       'If InStr( 1, line, item & "=", 1) = 1 Then
       equalpos = InStr(1, line, "=", 1 )
       If equalpos > 0 Then
       leftstring = Left(line, equalpos - 1 )
       leftstring = Trim(leftstring)
       If LCase(leftstring) = LCase(item) Then
         ReadIni = Mid( line, equalpos + 1 )
         ReadIni = Trim(ReadIni)
         Exit Do
       End If
       End If

       If ini.AtEndOfStream Then Exit Do
       line = ini.ReadLine
       line = Trim(line)
     Loop
     Exit Do
     End If
    Loop
    ini.Close

    End Function

    ' WRITEINI ( file, section, item, myvalue )
    ' file = path and name of ini file
    ' section = [Section] must not be in brackets
    ' item = the variable to write;
    ' myvalue = the myvalue to assign to the item.
    '
    Sub WriteIni( file, section, item, myvalue )

    in_section = False
    section_exists = False
    item_exists = ( ReadIni( file, section, item ) <> "" )
    wrote = False
    file = Trim(file)
    itemtrimmed = Trim(item)
    myvalue = Trim(myvalue)

    temp_ini = sh.ExpandEnvironmentStrings("%TEMP%\") & fs.GetTempName

    Set read_ini = fs.OpenTextFile( file, 1, True, TristateFalse )
    Set write_ini = fs.CreateTextFile( temp_ini, False)

    While read_ini.AtEndOfStream = False
     line = read_ini.ReadLine
     linetrimmed = Trim(line)
     If wrote = False Then
     If LCase(line) = "[" & LCase(section) & "]" Then
       section_exists = True
       in_section = True
     ElseIf InStr( line, "[" ) = 1 Then
       in_section = False
     End If
     End If

     If in_section Then
     If item_exists = False Then
       write_ini.WriteLine line
       write_ini.WriteLine item & "=" & myvalue
       wrote = True
       in_section = False
     Else
       equalpos = InStr(1, line, "=", 1 )
       If equalpos > 0 Then
       leftstring = Left(line, equalpos - 1 )
       leftstring = Trim(leftstring)
       If LCase(leftstring) = LCase(item) Then
         write_ini.WriteLine itemtrimmed & "=" & myvalue
         wrote = True
         in_section = False
       End If
       End If
       If Not wrote Then
       write_ini.WriteLine line
       End If
     End If
     Else
     write_ini.WriteLine line
     End If
    Wend

    If section_exists = False Then ' section doesn't exist
     write_ini.WriteLine
     write_ini.WriteLine "[" & section & "]"
     write_ini.WriteLine itemtrimmed & "=" & myvalue
    End If

    read_ini.Close
    write_ini.Close
           If fs.FileExists(file) then
               fs.DeleteFile file, True
           End if
           fs.CopyFile temp_ini, file, true
    fs.DeleteFile temp_ini, True

    End Sub

    The Machines.txt looks like this:

    Machines.txt

    00:0F:1F:B4:88:EF,Machine-09,5555-XXXX-66666-77777-XXXX
    00:0F:1F:B4:88:E8,Machine-04,5555-XXXX-66666-77777-XXXX

  4. Hi all,

    I'm starting a project over the next few weeks to develop a program similar in nature to the Microsoft BDD Enterprise Edition. My plan is to develop a system that allows multiple builds of unattended installs to be managed in the one applications. From source file locations and unattend.txt file settings to post install applications as well as bug tracking and release management.

    Unfortunately for me if i was to do all the work myself it would be out of data by the time it was finished. So I guess you'd call this recruitment. Anyone who is interested in helping out the skills i need are .net programmers and scripters.

    If you'd like to help please send me a message and we will discuss further.

  5. I've been looking into MS ISA server lately and I have discovered that it doesn't have any out of the box mechanism to limit or block objectionable content. It appears you have to go and spend more money on a 3rd party add-on. Does this seem 1. really expensive and 2. really stupid to anyone else.

  6. Your challenge should you choose to accept it is to find a definative guide to the stages of Windows XP setup. I mean details about t-13, cmdlines, textmode, gui mode, etc.

    I have been searching all over the place and can't really find a definative guide on this. I'm interested in exactly what can and can't be done durring these setup phases.

    Thanks all!

  7. Don't use Ghosted images - period.

    Especially in a diverse hardware environment like yours. You are just asking for weird problems down the line with ghosted images. Trust me, I know what I'm talking about, I've been rolling out Windows to my fortune 500 corp since win 3.0. Over the years I've tried all the deployment methods.

    When you ask questions like this, in forums like these, you'll get a lot of people who insist a imaged drive is the best approach. It isn't, it sucks. It's not just changing the IDE controller, it the imaged systems HAL type (single cpu, multi-threading P4, dual processor?) and PnP setup, etc. I could go on and on.

    The best way, and the most professional IMHO, is to use the unattend.txt method downloaded from a network installation point (not a cdrom). This is pretty much exactly the setup you have now, and it is the best.

    You may not like the way it is layed out, or think it's "messy" but it isn't. It's the best solution. You don't like updating the driver directory? Tough, it's part of the job to qualify new hardware. You're not supporting Mac's or Sun's, you knew PC's were dangerous when you took the job :)

    With a scripted network installation it takes only minutes to update the baseline build to incorporate new drivers, hotfixes, applications, etc. Where it can take hours to update images.

    Interesting....So you have a build directory for each model of PC you have?? I'd be very interested as to how you tackle this in your organisation. Do you have different driver directories for each model? Do you use a common winnt.sif file. How do you build your $oem$ directory.

    Basically we use a scripted network install at the moment that builds an SOE completely automated. Then we image this and deploy it to computers. The process will be similar with the new approach. Automatically install the OS from the network then hand over to SMS, which will install all the apps. Then image this and deploy.

    There seems to be so many different method of deploying the Windows OS that the hard part is select a method and sticking with it. I appreciate all the input, hopefully soon we will start work on this project and your input is saving us a lot of time.

  8. I sort of left this for a while.

    What I am trying to get around is the process of manuall building an SOE each time some id*** buys a new computer in our organisation. Application install is not an issue as we will either use scripting or SMS to install all the apps.

    We just need a base OS with the SMS client and then we can let SMS do it all. This is where the problem comes in. Each time a new model comes in we currently have to make a whole new unattended setup. These are the things that change:

    -winnt.sif (for PnP Drivers)

    -Drivers in $OEM$

    -Post installation of drivers (PnPDriverPath doesn't always work)

    -Model specific post install tasks

    I've heard some people say that as long as the harward is close to the same you can use disk imaging and run sysprep....is this true? I know you have all suggested very valid methods for building SOE/MOE environments but non that really tackle the problem of varying hardware. I'm seriously considering making a small .net the will automatically create the necessary dir in the $oem$ folder and configure everything that we need. What do you guys think about this?

  9. Manual Tasks:

    -Model specific settings in the Unattend.ini/winnt.sif

    -Drivers for each model

    -Post installation task

    -OS customization ie. is it win2k or xp

    That is all i can think of atm.

    I've almost convinced work to let me do RIS, how does that actually work?

  10. Unfortunately we are not allowed to persue PXE based solutions. We have about 1800 PC so ghost seems to be the best way to address this number of PC's.

    I think we will make our own. We have been playing with the idea of writing a small .net app to automate a lot of the manual task.

  11. What we currently do is build the entire OS and appz via a long series of batch scripts and then ghost the machines for deployment.

    We have probably a dozen or so models and this is where the problem comes in.

    We can quite easily develop an unattended install for a specific model but we don't want to have to do it all over again every time we get a new model of PC.

    So we need an unattended management system. Most would argue the SMS is the way to go for this and we agree, however SMS still needs a base operating system. At the very least we need to install the OS and apply any tweaks before installing an SMS client and kicking app installs off.

    There must be a method of organising Unattend.ini files, drivers, model specific things in such a way that each time a new build comes along you just add the needed drivers and model specific files to a dir structure and then kick off a common installer.

    If you have a look at Business Desktop Deployment article I linked to you will get an idea of what I mean. This doesn't however exactly meet our requirements. I'm just wondering exactly what others do with a varying hardware fleet.

  12. Hi all,

    I've been a member of this forum for a while now but haven't really made any posts......here we go.

    I've been given the task to develop an SOE for the organisation I work for. I've had a look at their old method and it is a mess. It used a dos floopy and a LOT of batch scripts to install win2k and all the apps....not nice.

    Has anyone seen Business Desktop Deployment at microsoft??

    It is very interesting. Uses a HTA to automate a lot of stuff.

    I'm just wondering how other organisations have approached the SOE in there organisation. How did you build a method of coping with a large number of pc models? Did you use sms? What about WinPE?

    I've done many Windows XP unattends but this isn't really suitable as we have quite a few different hardware platforms and software requirements.

    What does everyone think?

×
×
  • Create New...