Exportar (0) Imprimir
Expandir Tudo
Expandir Minimizar

Implantando sistemas operacionais com o uso do recurso Download and Execute do SMS 2003

Implantando sistemas operacionais com o uso do recurso Download and Execute do SMS 2003

Publicado em: 30 de novembro de 2006

Um feature pack para o SMS 2003 chamado de SMS OSD Feature Pack permite que o SMS implante novos sistemas operacionais em computadores. Essa versão do SMS OSD Feature Pack não fornece suporte para download desta nova imagem de sistema operacional para a unidade de disco rígido do computador antes do início do processo de atualização. Em vez disso, ela acessa os arquivos de pacote do sistema operacional diretamente a partir do ponto de distribuição do SMS. Isso limita a escalabilidade do SMS OSD Feature Pack, pois ele passa a ser limitado pelas velocidades da rede e pelas contagens do ponto de distribuição.

O processo e os scripts descritos neste documento mostram como habilitar o download dos arquivos de pacote do sistema operacional na unidade de disco rígido local de um computador antes da instalação real do novo sistema operacional. Isso permite que os arquivos sejam “pré-testados” nas máquinas que usam os recursos padrão Advanced Client Download and Execute do SMS 2003, que proporcionam uma escalabilidade muito maior (considerando um planejamento avançado suficiente).

Aviso   As etapas descritas neste documento, bem como as alterações feitas pelos scripts inclusos, não são suportadas pelo Microsoft PSS (Product Support Services). Use-as por sua conta e risco.

Nesta página

Introdução
Processo de configuração
Scripts usados nesse processo

Introdução

O SMS 2003 introduziu um novo recurso de software denominado Download and Execute. Esse recurso usa os recursos do BITS (Background Intelligent Transfer Service), que foram introduzidos no sistema operacional Microsoft Windows 2000 e posteriores, para permitir a recuperação de arquivos com o uso do HTTP (Hypertext Transfer Protocol). Essas transferências de arquivos podem ser suspensas e reiniciadas, a partir do ponto em que foram interrompidas, possibilitando uma melhora em termos de flexibilidade, especialmente em situações de pouca largura de banda.

Esses recursos Download and Execute também são úteis em outras situações. Por exemplo, se você estiver instalando um pacote SMS grande em vários computadores, poderá pré-colocar em cache o conteúdo do pacote no computador antes de executar o pacote. Isso é feito por meio da configuração apropriada de um anúncio do SMS.

  • O horário inicial do anúncio deve ser definido como um horário apropriado no futuro.

  • A data de execução obrigatória deve ser definida como um horário após o horário inicial do anúncio.

Quando o SMS 2003 Advanced Client encontrar um anúncio com um horário de execução obrigatório no futuro, ele começará automaticamente o download dos arquivos necessários para esse anúncio assim que o horário inicial desse anúncio tiver passado.

Se você fornecer tempo suficiente entre o horário inicial do anúncio e o horário de execução obrigatório, vários computadores poderão armazenar em cache todo o conteúdo do pacote. Isso permite que o mesmo grande conteúdo de computadores execute o pacote ao mesmo tempo sem qualquer impacto negativo sobre a rede.

Como os pacotes de sistema operacional são significativamente maiores que a maioria dos pacotes normalmente implantados pelo SMS, esse recurso pode ser extremamente vantajoso desde que as seguintes limitações sejam reconhecidas:

  • Os computadores clientes devem ter espaço em disco suficiente. Os computadores devem ser capazes de suportar os arquivos originais do sistema operacional, o backup de estados de usuários (opcionalmente, já que ele seria armazenado na rede) e o pacote completo do sistema operacional. (O SMS OSD Feature Pack removerá os arquivos antigos do sistema operacional antes de expandir a nova imagem.) O tamanho do cache do SMS 2003 Advanced Client também deve aumentar de forma a ser grande o suficiente para manter o pacote completo do sistema operacional (cujo tamanho deve oscilar entre gigabytes).

  • O impacto na rede ainda deve ser levado em consideração. Todos os computadores SMS 2003 Advanced Client começarão o download do conteúdo assim que o horário inicial do anúncio for atingido. Se você especificar muitos computadores na coleção ou se especificar um horário inicial de anúncio que ocorra em um horário inapropriado (por exemplo, no meio do dia útil), a rede e os servidores SMS poderão ficar gravemente sobrecarregados. Embora isso não cause problemas no pacote de implantação do sistema operacional, poderá causar outros problemas operacionais (por exemplo, lento acesso a e-mails, lento à Internet ou lenta entrega de outros pacotes do SMS).

  • Apenas o Windows 2000 e versões posteriores do sistema operacional suporte o recurso Download and Execute. Para clientes Microsoft Windows NT® 4.0 Workstation, o conteúdo ainda pode ser copiado para a unidade de disco rígido do computador e ser executado a partir desse local, mas isso apenas pode ser feito como parte da execução do anúncio; nenhum pré-escalonamento pode ser realizado. Além disso, como o Windows NT 4.0 apenas suporte uma partição de inicialização de 7,8 GB ou menor, é muito mais provável que não haverá espaço suficiente em disco para manter o sistema operacional original, o backup de estado do usuário e o pacote completo do sistema operacional.

Observação   É necessário realizar os testes corretos e a análise de impacto. Essas atividades estão além do escopo destes exemplos.

Para usar o Download and Execute com pacotes e anúncios de sistema operacional do SMS 2003, é necessário fazer modificações diretamente nos programas e nos anúncios de sistema operacional usando a API (interface de programa de aplicativos) do SMS, pois o console SMS Administrator proíbe especificamente essas modificações. O restante desses exemplos descreve como fazer essas modificações.

Processo de configuração

As atividades de configuração a serem realizadas são as seguintes:

  • Definição de coleções que contêm apenas os computadores que atendam aos requisitos. Por exemplo, talvez seja apropriado selecionar apenas os computadores que executem o Windows 2000 ou posterior com pelo menos 2 GB de espaço livre em disco (assumindo que todas as máquinas atendam aos requisitos do pacote do sistema operacional que está sendo implantando, como velocidade do processador ou memória).

  • Configuração do tamanho de cache do SMS 2003 Advanced Client de forma que haja capacidade suficiente para armazenar o pacote do sistema operacional.

  • Configuração do programa e do anúncio do sistema operacional usado para implantar o pacote do sistema operacional na coleção de computadores definida na atividade anterior.

Definindo coleções

Como nem todos os computadores terão espaço em disco suficiente para armazenar em cache o pacote completo do sistema operacional, é necessário criar uma coleção de computador que contenha apenas os computadores nos quais o armazenamento será possível. Isso pode ser feito com o uso das seguintes etapas:

  • Crie uma nova coleta denominada Implantar Windows XP com Download and Execute (ou outro nome adequado).

  • Na guia Membership, clique no ícone de cilindro para criar uma nova regra de consulta denominada Windows 2000 com espaço em disco suficiente (ou outro nome adequado).

  • Edite a instrução de consulta para selecionar apenas os computadores que executam o Windows 2000 e com mais de 2 GB de espaço em disco livre. (Pressupondo que o pacote do sistema operacional tenha no máximo 1,5 GB, permita cerca de 500 MB para o espaço de rascunho e para a funcionalidade de rotina.)

A regra de consulta deve ser semelhante à Figura 1.

Bb490331.SE_DepConSam01(pt-br,TechNet.10).gif

Figura 1. Exemplo de regra de consulta

Ou, examinando a linguagem da consulta, a regra deve ser semelhante à Figura 2.

Bb490331.SE_DepConSam02(pt-br,TechNet.10).gif

Figura 2. Exemplo de linguagem de consulta

Os requisitos exatos variarão para cada cliente. Certifique-se de verificar se a coleção contém os resultados apropriados antes de continuar com as seguintes etapas.

Configurando computadores SMS 2003 Advanced Client

Em geral, um SMS 2003 Advanced Client é configurado com um tamanho de cache entre 256 MB e 512 MB. Isso não será suficiente para a maioria dos pacotes de sistema operacional, cujo tamanho pode variar de 500 MB a vários gigabytes. Para oferecer suporte a esses pacotes, o tamanho máximo do cache precisa ser aumentado. Para isso, conclua as seguintes etapas:

  1. Crie um diretório que contenha um Microsoft Visual Basic® Scripting Edition (VBScript) que altere o tamanho do cache.

  2. Use esse diretório para criar um novo pacote. Nesse pacote, crie um programa que execute o VBScript. Expanda esse pacote a todos os pontos de distribuição do SMS.

  3. Distribua esse script à coleção de computadores definida na seção anterior, criando um anúncio obrigatório para o novo pacote. (Esse pacote deve ser executado antes do pacote do sistema operacional.)

O código do VBScript mostrado na Listagem 20 é necessário para alterar o tamanho do cache.

Listagem 20. VBScript necessário para alterar o tamanho do cache

Set ui = CreateObject("UIResource.UIResourceMgr")
Set cacheInfo = ui.GetCacheInfo
cacheInfo.TotalSize = 2000 ' Change maximum size to 2GB (approx)

Observe que isso deve tornar o tamanho do cache maior somente na medida do necessário para o pacote do sistema operacional. Nesse exemplo, pressuponha que o tamanho do cache anterior era 500 MB e o pacote do sistema operacional é 1500 MB; esse script torna o novo tamanho do cache grande o suficiente para suportar os 500 MB de conteúdo existente e o novo pacote do sistema operacional de 1,5 GB. Isso permite que outros pacotes residam no cache ao mesmo tempo, o que pode ser necessário dependendo do tempo durante o qual o pacote do sistema operacional estará presente no cache (o que, por sua vez, depende da diferença entre a data inicial do anúncio e a data do anúncio obrigatória) e quantos outros pacotes obrigatórios foram recentemente executados ou serão executados em breve a partir do cache.

Configurando programas e anúncios do sistema operacional

Para permitir que um pacote de sistema operacional do SMS 2003 ofereça suporte para Download and Execute, crie antes o pacote de sistema operacional usando as etapas padrão (capturando um arquivo .wim, criando o pacote a partir desse arquivo, definindo um programa de sistema operacional com as configurações e ações personalizadas necessárias e assim por diante). Você também deve criar um anúncio para esse pacote, mas ainda não direcione a coleção inteira. Em vez disso, direcione uma coleção vazia, que possa ser usada para finalidades de teste. Quando os testes estiverem concluídos, um novo anúncio poderá ser criado para a coleção completa (tomando muito cuidado para especificar o horário inicial apropriado do anúncio e o horário obrigatório do anúncio).

Dois scripts foram fornecidos para habilitar o suporte de Download and Execute:

  • ZTICache.vbs. Esse script é usado como front-end para o executável do programa do SMS OSD Feature Pack, osdlaunch.exe. Ele garante que o conteúdo do pacote em cache seja movido para um local seguro, C:\MININT\PackageSource, antes da execução de osdlaunch.exe. Ele também protege esse conteúdo de forma que osdlauch.exe não possa removê-lo durante sua limpeza normal da estrutura de diretório de C:\MININT.

  • ZTICacheUtil.vbs. Esse script faz chamadas de API do SMS para modificar objetos existentes de programas e anúncios do sistema operacional de forma a habilitar front-end do ZTICache.vbs (descrito anteriormente) e a habilitar Download and Execute no anúncio. Observe que você não poderá ver essas modificações no console SMS Administrator; ele continuará a mostrar que a execução a partir do ponto de distribuição está habilitada, mesmo quando o download a partir do ponto de distribuição tiver sido configurado.

Esses arquivos devem ser copiados para um local acessível no servidor (por exemplo, \\SERVER1\ZTI\) no qual o console SMS Administrator possa acessá-los com o uso de um caminho UNC (Universal Naming Convention).

Para fazer as alterações necessárias, o script ZTICache.vbs deve primeiro ser adicionado como arquivo necessário a uma ação personalizada existente (por exemplo, a ação personalizada Instalação do BDD Zero Touch - Validação). Isso fará com que o SMS OSD Feature Pack inclua esse arquivo no diretório do pacote (necessário uma vez que esse script é executado quando o programa do sistema operacional é iniciado pela primeira vez pelo anúncio). Quando o arquivo for adicionado, todos os pontos de distribuição do pacote deverão ser atualizados.

Após a adição do script ZTICache.vbs, os objetos de programas e anúncios do sistema operacional poderão ser modificados com o uso do script ZTICacheUtil.vbs. A Listagem 21 mostra como usar o script para habilitar Download and Execute no anúncio do SMS XXX20001; isso também fará com que o programa associado do sistema operacional seja modificado para executar ZTICache.vbs.

Listagem 21. Comando para executar ZTICacheUtil.vbs

cscript.exe ZTICacheUtil.vbs /server:SERVER1 
    /advertisement:XXX20001 /enable:true

Uma saída semelhante à Listagem 22 deve ser gerada.

Listagem 22. Exemplo de saída para execução de ZTICacheUtil.vbs

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
Connecting to SMS provider server SERVER1 and site MTN.
Retrieving advertisement object for advertisement XXX20001.
Enabled download and execute on advertisement XXX20001.
Retrieving program object for package XXX00001 and program Install XP.
Enabled ZTICache.vbs on package XXX00001 program Install XP.
Be sure to include ZTICache.vbs in the OS package by including it as a
required file on at least one custom action.
OS Package ID:       XXX00001
OS Package Name:      XP Master
 OS Program Name:     Install XP
 OS Program command line: wscript //b ZTICache.vbs
 OS Program cache enabled: True
  OS Advertisement ID:  XXX20001
  OS Advertisement flags: 48
  Download enabled:    True

Lembre-se de que a modificação do programa do sistema operacional afeta todos os anúncios que usam esse programa. Portanto, modifique apenas um programa que esteja sendo usado exclusivamente para suporte de Download and Execute. Isso pode exigir a criação de um segundo programa no pacote do sistema operacional.

Para desfazer as alterações feitas para suportar Download and Execute, reconfigure o anúncio e o programa do sistema operacional, como mostra a Listagem 23 (substituindo o ID de anúncio, o ID de pacote e o nome do programa apropriados).

Listagem 23. Desfazendo alterações feitas para suportar Download and Execute

cscript.exe ZTICacheUtil.vbs /server:SERVER1 
    /package:XXX00001 /program:"Install XP" /enable:false
cscript.exe ZTICacheUtil.vbs /server:SERVER1 
    /advertisement:XXX20001 /enable:false

Para obter mais informações sobre ZTICacheUtil.vbs, é possível executar o script sem parâmetros. Ele exibirá uma instrução de uso, bem como informações sobre cada pacote de sistema operacional, programa e anúncio atualmente definido no servidor SMS especificado.

Quando Download and Execute tiver sido habilitado em um programa e anúncio de sistema operacional, ele deverá ser testado. Isso pode ser feito por meio da adição de um ou mais computadores (preferivelmente computadores de teste) à coleção vazia criada anteriormente.

Quando estiver satisfeito com os resultados, um anúncio poderá ser criado para a coleção principal com base em consulta. Lembre-se de especificar um horário apropriado no futuro para a data inicial do anúncio. Teoricamente, esse horário deve corresponder a uma ocasião em que os clientes não percebam o impacto na rede (por exemplo, na sexta-feira à meia-noite). Além disso, lembre-se de que os clientes não começarão a baixar o conteúdo até que o anúncio seja obrigatório; portanto, adicione uma data de atribuição obrigatória apropriada.

Scripts usados nesse processo

Nós na Microsoft Corporation esperamos que os exemplos de scripts (ZTICacheUtil.vbs na Listagem 24 e ZTICache.vbs na Listagem 25) sejam úteis para você. Entretanto, o uso desses exemplos é de sua inteira responsabilidade. Eles são fornecidos no estado em que se encontram, sem garantias, expressas ou implícitas, quanto à precisão, integridade, adequação para finalidades específicas, direitos ou não-violação. A Microsoft Corporation não se responsabilizará por nenhum dano ocorrido devido ao uso destes exemplos de scripts, sejam os danos diretos, indiretos, especiais, incidentais ou conseqüentes, mesmo que tenha sido informada sobre a possibilidade de tais danos.

Código-fonte para ZTICacheUtil.vbs

A Listagem 24 contém o código-fonte de ZTICacheUtil.vbs. Copie e cole o código relacionado na Listagem 24 em um editor de texto e salve-o como ZTICacheUtil.vbs.

Listagem 24. Código-fonte para ZTICacheUtil.vbs

Observação Algumas partes do trecho de código a seguir foram exibidas em várias linhas para ficarem mais legíveis. Elas devem ser inseridas em uma única linha.

'//--------------------------
	-------------------------------------------------
'//
'//
'//  File:    ZTICacheUtil.vbs
'//
'//  Input:    none
'// 
'//  Return:    0 = Success, anything else indicates failure
'//
'//  Purpose:    By default, the OS Deployment Feature Pack 
				 does not support
'//             "download and execute" with OS packages.  
				This script enables
'//             that support in two ways:
'//
'//             1.  By modifying the OSD advertisement to 
					enable "download and 
'//                 execute".  By default, the SMS Administrator 
					Console will
'//                 prevent this.  (Even after the script changes 
					this through 
'//                 the SMS APIs, the GUI will still show 
					that it is not enabled.)
'//
'//             2.  By modifying the OSD program to run the 
					ZTICache.vbs
'//                 script which ensures that the locally-cached 
					OSD package files
'//                 are kept in a safe location, C:\MININT\PackageSource.
				   (This
'//                 can be done even without 
	enabling "download and execute" on
'//                 the OSD advertisement; in this case,
					the ZTICache.vbs script
'//                 will copy the OSD package files
					from the distribution point
'//                 directly to C:\MININT\PackageSource.
				    See the ZTICache.vbs
'//                 script for more details.)
'//
'//             This script is driven by command line 
				parameters.  It assumes
'//             that the script is being run by someone 
				with the necessary SMS
'//             permissions to modify package, program, 
				and advertisement objects.
'//             It also assumes that the user knows the 
				package ID, program name,
'//             and advertisement ID of the objects that 
				they want to modify, as
'//             well as the server name of the SMS site 
				owning those objects.
'//
'//        This script also requires Windows Scripting Host 5.6.
'//
'//------------------------------------------
	---------------------------------
' Initialization
Set sh = CreateObject("WScript.Shell")
Set argsNamed = WScript.Arguments.Named
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
' Get parameters
sServer = UCase(argsNamed("server"))
sPackage = UCase(argsNamed("package"))
sProgram = argsnamed("program")
sAdvertisement = UCase(argsNamed("advertisement"))
sEnable = UCase(argsNamed("enable"))
If argsNamed.Count = 0 then
    WScript.Echo ""
    WScript.Echo "USAGE:"
    WScript.Echo ""
    WScript.Echo WScript.ScriptName & 
	" [/server:<serverName>] 
	[/package:<packageID>]" &_
    " [/program:<programName>] 
	  [/advertisement:<advertisementID>] 
	  [/enable:<true|false>]"
    WScript.Echo ""
    WScript.Echo "Options:"
    WScript.Echo VBTAB & "/server:          
	SMS server name (Default=This server)."
    WScript.Echo VBTAB & "/package:        
	OS package ID (Default=Null)."
    WScript.Echo VBTAB & "/program:         
	OS program name (Default=null)."
    WScript.Echo VBTAB & "/advertisement:   
	OS advertisement ID (Default=null)."
    WScript.Echo ""
    WScript.Echo "Examples:"
    WScript.Echo ""
    WScript.Echo WScript.ScriptName & 
	" /advertisement:XXX20001 /enable:true"
    WScript.Echo WScript.ScriptName & 
	" /package:XXX00001 
	/program:""Install XP"" /enable:true"
    WScript.Echo ""
End if
' Connect to SMS provider
Set oServices = oLocator.ConnectServer(sServer, "root\sms")
Set oProviderLocation = oServices.ExecQuery("select * from 
SMS_ProviderLocation where ProviderForLocalSite = 1")
For Each o In oProviderLocation
    sProviderServer = o.Machine
    sProviderSite = o.SiteCode
Next
Set oServices = Nothing
WScript.Echo "Connecting to SMS provider server " & 
sProviderServer &_
 " and site " & sProviderSite & "."
Set oServices = oLocator.ConnectServer(sProviderServer, 
"root\sms\site_" &_
 sProviderSite)
' See what we need to do
If sAdvertisement <> "" then
    ' Get the specified advertisement
    WScript.Echo "Retrieving advertisement 
	object for advertisement " &_
     sAdvertisement & "."
    Set oAdvert = oServices.Get
	("SMS_Advertisement.AdvertisementID='" &_
     sAdvertisement & "'")
    ' Modify the program as appropriate.
    Select Case sEnable
        Case "YES", "TRUE"
            If oAdvert.RemoteClientFlags <> 48 then
                oAdvert.RemoteClientFlags = 48
                oAdvert.Put_
                WScript.Echo "Enabled download and execute 
				on advertisement  " &_
                 sAdvertisement & "."
                ' Force the package and program to be checked if 
		 no other values were specified.
                  If sPackage = "" and sProgram = "" then
                    sPackage = oAdvert.PackageID
                    sProgram = oAdvert.ProgramName
                End if
            End if
        Case Else
            If oAdvert.RemoteClientFlags <> 40 then
                oAdvert.RemoteClientFlags = 40
                oAdvert.Put_
                WScript.Echo "Disabled download and execute 
		on advertisement  " &_
                 sAdvertisement & "."
            End if
    End Select
End if
If sPackage <> "" and sProgram <> "" then
    ' Get the specified program
    WScript.Echo "Retrieving program object 
	for package " & sPackage &_
     " and program " & sProgram & "."
    Set oProgram = oServices.Get
("SMS_Program.PackageID='" & sPackage &_
     "',ProgramName='" & sProgram & "'")
    ' Modify the program as appropriate.
    Select Case sEnable
        Case "YES", "TRUE"
            If oProgram.CommandLine <> 
	"wscript //b ZTICache.vbs" then
                oProgram.CommandLine = "wscript //b 
		ZTICache.vbs"
                oProgram.Put_
                WScript.Echo "Enabled ZTICache.vbs 
	on package " & sPackage &_
                 " program " & sProgram & "."
                WScript.Echo "Be sure to include ZTICache.vbs 
	in the OS package by including it as a"
                WScript.Echo "required file on at 
	least one custom action."
            End if
        Case Else
            If oProgram.CommandLine <> "osdlaunch.exe" then
                oProgram.CommandLine = "osdlaunch.exe"
                oProgram.Put_
                WScript.Echo "Disabled ZTICache.vbs 
	on package " & sPackage &_
                 " program " & sProgram & "."
            End if
    End Select
End if
' Finally, report on the current state
Set oPackages = oServices.ExecQuery("select * 
from SMS_Package where ImageFlags = 1")
For each oPackage in oPackages
    WScript.Echo " "
    WScript.Echo "OS Package ID:              
" & oPackage.PackageID
    WScript.Echo "OS Package Name:           
 " & oPackage.Name
    Set oPrograms = oServices.ExecQuery("select 
* from SMS_Program where PackageID = '" &_
     oPackage.PackageID & "'")
    For each oProgram in oPrograms
        WScript.Echo "  OS Program Name:          
	" & oProgram.ProgramName
        WScript.Echo "  OS Program command line:  
	" & oProgram.CommandLine
 If Instr(oProgram.CommandLine, "ZTICache.vbs") > 0 then
            bEnabled = true
        Else
            bEnabled = false
        End if
        WScript.Echo "  OS Program cache enabled: 
		" & bEnabled
        Set oAdverts = oServices.ExecQuery("select * 
from SMS_Advertisement where PackageID = '" &_
         oProgram.PackageID & "' and ProgramName = 
		'" & oProgram.ProgramName & "'")
        For each oAdvert in oAdverts
            WScript.Echo "    OS Advertisement ID:    
			" & oAdvert.AdvertisementID
            WScript.Echo "    OS Advertisement flags: 
			" & oAdvert.RemoteClientFlags
            If oAdvert.RemoteClientFlags = 48 then
                bDownloadEnabled = true
            Else
                bDownloadEnabled = false
            End if
            WScript.Echo "    Download enabled:      
			" & bDownloadEnabled
            ' Sanity check
            If bDownloadEnabled and (not bEnabled) then
                WScript.Echo " "
                WScript.Echo "Warning: ZTICache.vbs 
		must be enabled on " &_
                 oPackage.PackageID & " and " &
	oProgram.ProgramName
                WScript.Echo "in order for download and 
	execute to be successful for advertisement " &_
                oAdvert.AdvertisementID & "."
                WScript.Echo " "
            End if
        Next 
    Next
Next
' Cleanup
Set oServices = Nothing

Código-fonte para ZTICache.vbs

A Listagem 25 contém o código-fonte de ZTICache.vbs. Copie e cole o código relacionado na Listagem 25 em um editor de texto e salve-o como ZTICache.vbs.

Listagem 25. Código-fonte para ZTICache.vbs.

Observação Algumas partes do trecho de código a seguir foram exibidas em várias linhas para ficarem mais legíveis. Elas devem ser inseridas em uma única linha.

'//---------------------------
		------------------------------------------------
'//
'//
'//  File:    ZTICache.vbs
'//
'//  Input:    none
'// 
'//  Return:    Return code from OSDLaunch.exe (0 = Success)
'//
'//  Purpose:    By default, the OS Deployment Feature 
				Pack does not support
'//             "download and execute" with OS packages.  
				This script is
'//             designed to enable this by moving or 
				copying the OS package
'//             files to a safe location on the hard drive,
				C:\MININT\PackageSource,
'//             where they will not be removed when OSD 
				cleans the hard drive.
'//             After doing this, it will run OSDLaunch.exe 
				to kick off the 
'//             normal OSD process.  But because OSDLaunch 
				"cleans" the C:\MININT
'//             directory when it starts, the script must 
				also protect the 
'//             contents of the C:\MININT\PackageSource 
				directory.  It does
'//             this by opening all the files in the directory,
				which prevents
'//             their deletion because they are in use.
'//
'//             If the OSD advertisement has been set to
				enable "download and execute",
'//             the package files (and this script) will be
				in the SMS advanced client
'//             cache directory (typically "%WINDIR\System32
				\ccm\cache\<package>").  In
'//             order to prevent there being two copies
				of the files on the hard drive,
'//             the files are moved to C:\MININT\
				PackageSource instead of copied.
'//
'//             If this script is run on an NT 4.0 
				workstation (through the same OSD
'//             advertisement), "download and execute" 
				is not available.  However, the
'//             script will still copy the files to the
				hard drive before initiating
'//             the OSD process.  This at least enables
				some of the benefits of 
'//             download and execute for NT 4.0 client.
'//
'//             This script is inserted into an existing
				OSD program by the
'//             ZTICacheUtil.vbs script.  See that script
				for further information.
'//             This script must be added to one of the
				OSD custom actions as
'//             a required file so that it is included
				in the OSD package files.
'//             After doing this, the distribution points
				need to be updated.
'//        
'//---------------------------------------------
	------------------------------
' Initialization
Set fso = CreateObject("Scripting.FileSystemObject")
Set sh = CreateObject("WScript.Shell")
' Find the directory we are running from 
- that's the source.
sCacheDir = fso.GetParentFolderName
(WScript.ScriptFullName)
' Create the OSD directory structure
If not fso.FolderExists("C:\MININT") then
    fso.CreateFolder "C:\MININT"
End if
If fso.FolderExists("C:\MININT\PackageSource") then
    fso.DeleteFolder "C:\MININT\PackageSource", true
End if
fso.CreateFolder "C:\MININT\PackageSource"
' If we are running from a local path, move the 
contents to the PackageSource directory.
' Otherwise, just copy it.  (When running from a 
local path, SMS must have already copied
' the files locally using BITS.)
If Left(sCacheDir,2) = "\\" then
    fso.CopyFile sCacheDir & "\*.*", 
"C:\MININT\PackageSource\", True
    sh.LogEvent 0, "Copied files in " & sCacheDir
    For each f in fso.GetFolder(sCacheDir).Subfolders
        sh.LogEvent 0, "Copying folder " & f.Path
        fso.CopyFolder f.Path, "C:\MININT\PackageSource\", true
    Next
Else
    fso.MoveFile sCacheDir & "\*.*", 
"C:\MININT\PackageSource\"
    sh.LogEvent 0, "Moved files in " & 
sCacheDir
    For each f in fso.GetFolder(sCacheDir).
Subfolders
        sh.LogEvent 0, "Moving folder " & f.Path
        fso.MoveFolder f.Path, 
		"C:\MININT\PackageSource\"
    Next
End if
' Log the count of files in the folder
sh.LogEvent 0, "Files in C:\MININT\PackageSource folder: " &_
 fso.GetFolder("C:\MININT\PackageSource").Files.Count
' Because OSDLaunch will "clean up" the C:\MININT 
directory, we need to keep the package
' source files from being deleted in the process.  
Open each one of them and keep them open
' until OSDLaunch.exe completes.
sh.LogEvent 0, "Opening C:\MININT\
PackageSource files"
Set oFiles = CreateObject
("Scripting.Dictionary")
For each f in fso.GetFolder
("C:\MININT\PackageSource").Files
    Set oFile = fso.OpenTextFile(f, 1)
    oFiles.Add f, oFile
Next
For each s in fso.GetFolder
("C:\MININT\PackageSource").SubFolders
    For each f in s.Files
        Set oFile = fso.OpenTextFile(f, 1)
        oFiles.Add f, oFile
    Next
Next
' Run OSDLaunch.exe from the new directory.  
It will try to clean up C:\MININT, but the
' open files will keep that from causing problems. 
 OSDLaunch will then install OSDAgent
' as a service and that will drive the
rest of the process.
sh.LogEvent 0, "Setting working directory"
sh.CurrentDirectory = "C:\MININT\PackageSource"
sh.LogEvent 0, "Running OSDLaunch"
rc = sh.Run("OSDLaunch.exe", 0, true)
sh.LogEvent 0, "Return code from 
OSDLaunch = " & rc
' Quit with the return code from OSDLaunch.
  The files will automatically be closed.
WScript.Quit rc
Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft