Jump to content

Recommended Posts

Posted

hello,

i try to deploy Microsoft patch with autoit.

When i use by myself the pacth.exe it is ok,

I put a line : call \\SERVER\patch$\patch.exe in my user session script and i have an error message :

Line 0 (file "\\SERVER\patch$\patche.exe"):

Return Runwait(@CompSpec & " /C "&$Commande, "", @SW_HIDE)

Error : Unable ti execute the external program.

I am sure of the NT authorization on my SERVER (everyone, full control on the patch$ share and folder)

On the workstation, the user is not administrator (so i use the runasset command with an domain admin user)

Thank you for you help

Ludovic

;Script Patch

#include <File.au3>

#include <Process.au3>

$compte = 0

$logfile = "\\SERVER\patch$\0508.log"

$var_poste = EnvGet ( "COMPUTERNAME" )

$var_user = EnvGet ( "USERNAME" )

$value = "Update"

$Prod = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName")

$CSDVer = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CSDVersion")

IF $CSDVer = 'Service Pack 4' AND $Prod = 'Microsoft Windows 2000' then

$KB899588 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB899588", "Type")

$KB896423 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB896423", "Type")

IF $KB899588 <> $value then

msgbox (0, "", "Installation Patch Microsoft KB899588", 2)

;filecopy("\\SERVER\patch$\W2k\MS0539\KB899588.exe", "c:\")

RunAsSet("USER", DOMAIN"", "PASSWORD",2)

$rc1 = _rundos("start copy \\SERVER\patch$\w2k\MS0539\KB899588.exe c:\")

$rc2 = _rundos("start c:\KB899588.exe /quiet /norestart")

$rc3 = _rundos("start del c:\KB899588.exe /q")

RunAsSet()

_FileWriteLog($logfile ,$var_poste & " Installation KB899588 " & $var_user)

$compte = $compte + 1

ENDIF

IF $KB896423 <> $value then

msgbox (0, "", "Installation Patch Microsoft KB896423", 2)

filecopy("\\SERVER\patch$\W2k\MS0543\KB896423.exe", "c:\")

RunAsSet("USER", DOMAIN"", "PASSWORD",2)

$rc4 = _rundos("start copy \\SERVER\patch$\w2k\MS0543\KB896423.exe c:\")

$rc5 = _rundos("satrt c:\KB896423.exe /quiet /norestart")

$rc6 = _rundos("del c:\KB896423.exe /q")

;filedelete("c:\KB896423.exe")

RunAsSet()

_FileWriteLog($logfile ,$var_poste & " Installation KB896423 " & $var_user)

$compte = $compte + 1

ENDIF

ENDIF

Posted

Hi Ludovic,

Return Runwait(@CompSpec & " /C "&$Commande, "", @SW_HIDE)

Error : Unable ti execute the external program.

The correct macro name is @Comspec, not @Compspec.

Also, $Commande is not defined in the code you posted.

Please post your complete code (in code blocks) or tell us what the value of $Commande should be.

Also, SvenP has done extensive work in this area.

Take a look at this topic: Using AutoIt to deploy patches

[font="Tahoma"]"Tougher than the toughies and smarter than the smarties"[/font]

Posted

I make a mistake tu put the text error here.

I dont have this command in my sript, but it is in the Process.au3 include file.

I find where is the problem

It is with the runasset command and the /2 option (netonly) I use now /1 and it's work fine

;Script Patch

#include <File.au3>

#include <Process.au3>

$compte = 0

$logfile = "\\SERVER\patch$\0510.log"

$var_poste = EnvGet ( "COMPUTERNAME" )

$var_user = EnvGet ( "USERNAME" )

$value = "Update"

$Prod = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName")

$CSDVer = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CSDVersion")

IF $CSDVer = 'Service Pack 4' AND $Prod = 'Microsoft Windows 2000' then

$KB899588 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB899588", "Type")

$KB896423 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB896423", "Type")

IF $KB899588 <> $value then

msgbox (0, "", "Installation Patch Microsoft KB899588",2)

filecopy("\\SERVER\patch$\w2k\MS0539\KB899588.exe", "c:\temp\")

RunAsSet("USERADMIN", "DOMAIN", "PASSWORD",1)

runwait("c:\temp\KB899588.exe /quiet /norestart",@SystemDir)

filedelete("c:\temp\KB899588.exe")

RunAsSet()

_FileWriteLog($logfile ,$var_poste & " Installation KB899588 " & $var_user)

$compte = $compte + 1

ENDIF

IF $KB896423 <> $value then

msgbox (0, "", "Installation Patch Microsoft KB896423",2)

filecopy("\\SERVER\patch$\w2k\MS0543\KB896423.exe", "c:\temp\")

RunAsSet("USERADMIN", "DOMAIN", "PASSWORD",1)

runwait("c:\temp\KB896423.exe /quiet /norestart",@SystemDir)

filedelete("c:\temp\KB96423.exe")

RunAsSet()

_FileWriteLog($logfile ,$var_poste & " Installation KB896423 " & $var_user)

$compte = $compte + 1

ENDIF

ENDIF

IF $CSDVer = 'Service Pack 3' AND $Prod = 'Microsoft Windows 2000' then

_FileWriteLog($logfile ,$var_poste & " ***POSTE EN SP3*** " & $var_user)

ENDIF

IF $CSDVer = 'Service Pack 2' AND $Prod = 'Microsoft Windows 2000' then

_FileWriteLog($logfile ,$var_poste & " ***POSTE EN SP2*** " & $var_user)

ENDIF

IF $CSDVer = 'Service Pack 1' AND $Prod = 'Microsoft Windows 2000' then

_FileWriteLog($logfile ,$var_poste & " ***POSTE EN SP1*** " & $var_user)

ENDIF

IF $compte > 0 then

msgbox (0, "Reboot de votre machine", "Suite à l'installation de patchs Microsoft, votre pc va redémarrer", 3)

Shutdown (6)

ENDIF

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...