| 
| 
| 
| #210874 - 2015-10-30 12:21 PM  Windows 7 script - Error failed to find/open script [Log.kix] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Hi guys, hope someone can help. I have created a Log.kix script which calls 2 other scripts within it but when I run the first Log.kix script I get an Error failed to find/open script [Log.kix]
 I'm running the script on a local Windows 7 Enterprise PC, the scripts are stored on C:\Netlogon\  the folder also contains the kix32.exe
 
 I'm running the script from the command prompt by typing C:\Netlogon\KIX32.EXE Log.KIX
 
 I have posted the 3 three scripts I have, the log.kix calls the software_inventory.kix and to write PC software information to a .csv file
 
 Please can someone assist? My first problem is the error I'm getting above when trying to run the script (log.kix) on a local PC to test, from command prompt.
 
 Log.kix
 
 
[color:#333399];******************************************
;*** Initialise Global script variables ***
CALL @LDRIVE+"C:\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "C:\Netlogon\"
$LogonLogs = "C:\Netlogon\Software_Inventory\"
;*** End Initialise Global script variables ***
;**********************************************
	IF @ProductType="Windows NT Workstation" OR @ProductType="Windows 2000 Professional" OR @ProductType="Windows XP Professional" OR @ProductType="Windows XP Professional Tablet PC" OR @ProductType="Windows 7 Enterprise"
		CALL $UpdatesScripts_Loc+"Software_Inventory.kix"
	ENDIF
;	*** End Write Logon info	                       				     		***
;	***************************************************************************************************
[/color]
Software_Inventory.kix
[color:#3333FF]; ========================================================================
$uninstallkey="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\"
$PackageList=Chr(34)+"PC"+Chr(34)+","+CHR(34)+"Software_Name"+CHR(34)+","+CHR(34)+"Software_Version"+Chr(34)+","+Chr(34)+"Software_Publisher"+Chr(34)
$Index=0
:PackageLoop
$package=ENUMKEY($uninstallkey, $Index)
If @ERROR = 0
	$SoftwareName=READVALUE($uninstallkey+$package,"Displayname")
	If $SoftwareName<>""
		If InStr($SoftwareName,"Security Update For")=0 AND InStr($SoftwareName,"Update for Windows XP")=0 AND InStr($SoftwareName,"Windows XP Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows XP")=0 AND InStr($SoftwareName,"Windows 2000 Hotfix")=0
			$SoftwareVersion="N/A"
			$SoftwareVersion=READVALUE($uninstallkey+$package,"DisplayVersion")
			If $SoftwareVersion=""
				$SoftwareVersion="N/A"
			EndIf
			$Publisher="N/A"
			$Publisher=READVALUE($uninstallkey+$package,"Publisher")
			If $Publisher=""
				$Publisher="N/A"
			EndIf
			$PackageList = $PackageList + @CRLF +CHR(34)+ @WKSTA +CHR(34)+ "," +CHR(34)+ $SoftwareName +CHR(34)+ "," +CHR(34)+ $SoftwareVersion+CHR(34)+","+Chr(34)+$Publisher+Chr(34)
		ENDIF
	EndIf
	$Index=$Index+1
	Goto PackageLoop
EndIf
LogtoFile("ForceOverwrite",$LogonLogs+"Software_Inventory\"+@WKSTA+".csv",$PackageList)[/color]
UDF_Global.kix
[color:#6633FF];*** Global Variables ***
$GlobalScripts_Loc = @LDRIVE+"C:\Netlogon\"
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;FUNCTION      ChkRegSec
;ACTION        Checks if the user can write to the specified registry key
;SYNTAX        ChkRegSec(RegistryKey)
;PARAMETERS    RegistryKey
;                Registry key to check for write access (in form HKLM\Key\Subkey or HKCU\Key\Subkey)
;RETURNS       0 if write permission OK, error code if failed
;EXAMPLE       IF ChkRegSec("HKLM\Software\MiltonKeynesCouncil")<>0 ? "No permission to write to registry" ENDIF
;
  FUNCTION ChkRegSec( $RegKey )
	DIM $regsectest
	$ChkRegSec = 0
	$regsectest = WriteValue($RegKey, "MKCTESTSEC", "Passed", "REG_SZ")
	If $regsectest <> 0
		Shell $GlobalScripts_Loc+"regseclog.bat "+@USERID+" "+@WKSTA+" "+@TIME+" "+@DATE+" "+@LSERVER+" "+$RegKey
		$ChkRegSec = $regsectest
	EndIf
  EndFunction
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;FUNCTION		ChkPerms
;ACTION			Checks if the user can write to the specified registry key
;AUTHOR			Jeremy Smedley
;VERSION		1.00
;KIXTART		4.21
;DATE CREATED	2006/03/21
;SYNTAX			ChkPerms(Type, Location)
;PARAMETERS		Type
;				Registry or Folder
;				Location
;               Folder or Registry key to check for write access (in form HKLM\Key\Subkey or HKCU\Key\Subkey, or Drive:\folder)
;RETURNS		0 if write + delete permission OK, 1 if no write permission, 2 if no delete permission
;EXAMPLE		IF ChkPerms("Registry","HKLM\Software\MiltonKeynesCouncil")=1 ? "No permission to write to registry" ENDIF
;
  Function ChkPerms( $chkpermstype, $chkpermsLocation )
	DIM $chkpermstest, $chkpermstest2, $chkpermstatus
	Select
		Case $chkpermstype="Registry"
			$chkpermstest = WriteValue($chkpermsLocation, "MKCTESTSEC", "Passed", "REG_SZ")
			$chkpermstest2 = ReadValue($chkpermsLocation, "MKCTESTSEC")
			If $chkpermstest2 = "Passed"
				$chkpermstest = DelValue($chkpermsLocation, "MKCTESTSEC")
				If $chkpermstest = 0
					$chkpermstatus = 0
				Else
					$chkpermstatus = 2
				EndIf
			Else
				$chkpermstatus = 1
			EndIf
			$ChkPerms = $chkpermstatus
		Case $chkpermstype="Folder"
			Copy @LDRIVE+"C:\Logons\securitytest.txt" $chkpermsLocation+"\securitytest.txt"
			If Exist($chkpermsLocation+"\securitytest.txt")
				Del $chkpermsLocation+"\securitytest.txt"
				If Exist($chkpermsLocation+"\securitytest.txt")
					$chkpermstatus = 2
				Else
					$chkpermstatus = 0
				EndIf
			Else
				$chkpermstatus = 1
			EndIf
			$ChkPerms = $chkpermstatus
		Case 1
			$ChkPerms = 50
	EndSelect
  EndFunction
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;FUNCTION		LogtoFile
;ACTION			Writes data to log file
;AUTHOR			Jeremy Smedley
;VERSION		1.00
;KIXTART		4.21
;DATE CREATED	2006/03/21
;SYNTAX			LogtoFile(Function, Location, Data)
;PARAMETERS		Function
;				Append or Overwrite
;				Location
;               File to write to
;				Data
;				Required contents of file
;RETURNS		N/A
;EXAMPLE		LogtoFile("Append",$LogonLogs+"byuser\user1","Testing User1 logging")
;
  Function LogtoFile( $LogtoFile_Fn, $LogtoFile_Loc, $LogtoFile_Data )
	$LogtoFile_x = FreeFileHandle()
	IF $LogtoFile_x >0
		Select
			Case $LogtoFile_Fn = "Append"
				IF Open( $LogtoFile_x , $LogtoFile_Loc , 5 ) = 0
					$LogtoFile_y = WriteLine( 1 , $LogtoFile_Data + @CRLF )
					$LogtoFile_y = Close($LogtoFile_x)
				ENDIF
			Case $LogtoFile_Fn = "ForceOverwrite"
				IF EXIST ($LogtoFile_Loc)
					DEL $LogtoFile_Loc
				ENDIF
				IF Open( $LogtoFile_x , $LogtoFile_Loc , 5 ) = 0
					$LogtoFile_y = WriteLine( 1 , $LogtoFile_Data + @CRLF )
					$LogtoFile_y = Close($LogtoFile_x)
				ENDIF
			Case $LogtoFile_Fn = "Overwrite"
				RUN "CMD.exe /C ECHO "+$LogtoFile_Data+">"+"$LogtoFile_Loc"
			Case 1
				RUN "CMD.exe /C ECHO "+$LogtoFile_Data+">>"+"$LogtoFile_Loc"
		EndSelect
	EndIf
  EndFunction
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$[/color]
 Edited by Mart (2015-10-30 01:35 PM)
 Edit Reason: Please use code tags when posting code.
 |  
| Top |  |  |  |  
| 
| 
| #210876 - 2015-10-30 01:39 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  ] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Update I think the script command I was using wrong. I changed directory to get to the Netlogon folder and then ran different script and this worked (c:\Netlogon>C:\Netlogon\KIX32.EXE network.KIX).
 So now I run the log.kix and it looks like it runs but no software information on the PC is written to a .csv file. Please can some help with my log.kix file to see if the code needs changing?
 
 Thanks
 
 Edited by User1234 (2015-10-30 01:45 PM)
 
 |  
| Top |  |  |  |  
| 
| 
| #210879 - 2015-11-02 12:17 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  Lonkero] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
I'm writing to C:\Netlogon\Software_Inventory\
 I now appear to be getting  error: unknown command [logtofile]! when running software_inventory.kix
 
 Not sure why?
 
 |  
| Top |  |  |  |  
| 
| 
| #210880 - 2015-11-02 04:57 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  ] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Ok getting a bit further, my script now seems to be running but nothing no .csv file is being created within C:\Netlogon\Software_Inventory. Below is my code.
 First script which then calls software_inventory.kix and also my UDF_global.kix
 
 If anyone can assist. Thanks
 
 Log.kix
 
 
;	***************************************************************************************************
;	*** Write logon info to $LogonLogs Keep Last Item!						***
;******************************************
;*** Initialise Global script variables ***
CALL "C:\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "\\hbs002592\c$\Netlogon\"
$LogonLogs = "\\hbs002592\c$\Netlogon\Software_Inventory\"
;*** End Initialise Global script variables ***
;**********************************************
	IF @ProductType="Windows NT Workstation" OR @ProductType="Windows 2000 Professional" OR @ProductType="Windows XP Professional" OR @ProductType="Windows XP Professional Tablet PC" OR @ProductType="Windows 7 Enterprise Edition (N)"
		CALL $UpdatesScripts_Loc+"Software_Inventory.kix"
	ENDIF
;	*** End Write Logon info	                       				     		***
;	***************************************************************************************************
RETURN
Software_Inventory.kix
; ========================================================================
CALL "\\hbs002592\c$\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "\\hbs002592\c$\Netlogon\"
$LogonLogs = "\\hbs002592\c$\Netlogon\Software_Inventory\"
$uninstallkey="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\"
$PackageList=Chr(34)+"PC"+Chr(34)+","+CHR(34)+"Software_Name"+CHR(34)+","+CHR(34)+"Software_Version"+Chr(34)+","+Chr(34)+"Software_Publisher"+Chr(34)
$Index=0
:PackageLoop
$package=ENUMKEY($uninstallkey, $Index)
If @ERROR = 0
	$SoftwareName=READVALUE($uninstallkey+$package,"Displayname")
	If $SoftwareName<>""
		If InStr($SoftwareName,"Security Update For")=0 AND InStr($SoftwareName,"Update for Windows 7")=0 AND InStr($SoftwareName,"Windows 7 Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows 7")=0 AND InStr($SoftwareName,"Windows 7 Hotfix")=0
			$SoftwareVersion="N/A"
			$SoftwareVersion=READVALUE($uninstallkey+$package,"DisplayVersion")
			If $SoftwareVersion=""
				$SoftwareVersion="N/A"
			EndIf
			$Publisher="N/A"
			$Publisher=READVALUE($uninstallkey+$package,"Publisher")
			If $Publisher=""
				$Publisher="N/A"
			EndIf
			$PackageList = $PackageList + @CRLF +CHR(34)+ @WKSTA +CHR(34)+ "," +CHR(34)+ $SoftwareName +CHR(34)+ "," +CHR(34)+ $SoftwareVersion+CHR(34)+","+Chr(34)+$Publisher+Chr(34)
		ENDIF
	EndIf
	$Index=$Index+1
	Goto PackageLoop
EndIf
LogtoFile("ForceOverwrite",$LogonLogs+"Software_Inventory\"+@WKSTA+".csv",$PackageList)
UDF_global.kix
;*** Global Variables ***
$GlobalScripts_Loc = @LDRIVE+"\updates\"
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;FUNCTION      ChkRegSec
;ACTION        Checks if the user can write to the specified registry key
;AUTHOR        Jeremy Smedley
;VERSION       1.00
;KIXTART       4.21
;DATE CREATED  2003/08/14
;SYNTAX        ChkRegSec(RegistryKey)
;PARAMETERS    RegistryKey
;                Registry key to check for write access (in form HKLM\Key\Subkey or HKCU\Key\Subkey)
;RETURNS       0 if write permission OK, error code if failed
;EXAMPLE       IF ChkRegSec("HKLM\Software\MiltonKeynesCouncil")<>0 ? "No permission to write to registry" ENDIF
;
  FUNCTION ChkRegSec( $RegKey )
	DIM $regsectest
	$ChkRegSec = 0
	$regsectest = WriteValue($RegKey, "MKCTESTSEC", "Passed", "REG_SZ")
	If $regsectest <> 0
		Shell $GlobalScripts_Loc+"regseclog.bat "+@USERID+" "+@WKSTA+" "+@TIME+" "+@DATE+" "+@LSERVER+" "+$RegKey
		$ChkRegSec = $regsectest
	EndIf
  EndFunction
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;FUNCTION		ChkPerms
;ACTION			Checks if the user can write to the specified registry key
;AUTHOR			Jeremy Smedley
;VERSION		1.00
;KIXTART		4.21
;DATE CREATED	2006/03/21
;SYNTAX			ChkPerms(Type, Location)
;PARAMETERS		Type
;				Registry or Folder
;				Location
;               Folder or Registry key to check for write access (in form HKLM\Key\Subkey or HKCU\Key\Subkey, or Drive:\folder)
;RETURNS		0 if write + delete permission OK, 1 if no write permission, 2 if no delete permission
;EXAMPLE		IF ChkPerms("Registry","HKLM\Software\MiltonKeynesCouncil")=1 ? "No permission to write to registry" ENDIF
;
  Function ChkPerms( $chkpermstype, $chkpermsLocation )
	DIM $chkpermstest, $chkpermstest2, $chkpermstatus
	Select
		Case $chkpermstype="Registry"
			$chkpermstest = WriteValue($chkpermsLocation, "MKCTESTSEC", "Passed", "REG_SZ")
			$chkpermstest2 = ReadValue($chkpermsLocation, "MKCTESTSEC")
			If $chkpermstest2 = "Passed"
				$chkpermstest = DelValue($chkpermsLocation, "MKCTESTSEC")
				If $chkpermstest = 0
					$chkpermstatus = 0
				Else
					$chkpermstatus = 2
				EndIf
			Else
				$chkpermstatus = 1
			EndIf
			$ChkPerms = $chkpermstatus
		Case $chkpermstype="Folder"
			Copy @LDRIVE+"\updates\securitytest.txt" $chkpermsLocation+"\securitytest.txt"
			If Exist($chkpermsLocation+"\securitytest.txt")
				Del $chkpermsLocation+"\securitytest.txt"
				If Exist($chkpermsLocation+"\securitytest.txt")
					$chkpermstatus = 2
				Else
					$chkpermstatus = 0
				EndIf
			Else
				$chkpermstatus = 1
			EndIf
			$ChkPerms = $chkpermstatus
		Case 1
			$ChkPerms = 50
	EndSelect
  EndFunction
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;FUNCTION		LogtoFile
;ACTION			Writes data to log file
;AUTHOR			Jeremy Smedley
;VERSION		1.00
;KIXTART		4.21
;DATE CREATED	2006/03/21
;SYNTAX			LogtoFile(Function, Location, Data)
;PARAMETERS		Function
;				Append or Overwrite
;				Location
;               File to write to
;				Data
;				Required contents of file
;RETURNS		N/A
;EXAMPLE		LogtoFile("Append",$LogonLogs+"byuser\user1","Testing User1 logging")
;
  Function LogtoFile( $LogtoFile_Fn, $LogtoFile_Loc, $LogtoFile_Data )
	$LogtoFile_x = FreeFileHandle()
	IF $LogtoFile_x >0
		Select
			Case $LogtoFile_Fn = "Append"
				IF Open( $LogtoFile_x , $LogtoFile_Loc , 5 ) = 0
					$LogtoFile_y = WriteLine( 1 , $LogtoFile_Data + @CRLF )
					$LogtoFile_y = Close($LogtoFile_x)
				ENDIF
			Case $LogtoFile_Fn = "ForceOverwrite"
				IF EXIST ($LogtoFile_Loc)
					DEL $LogtoFile_Loc
				ENDIF
				IF Open( $LogtoFile_x , $LogtoFile_Loc , 5 ) = 0
					$LogtoFile_y = WriteLine( 1 , $LogtoFile_Data + @CRLF )
					$LogtoFile_y = Close($LogtoFile_x)
				ENDIF
			Case $LogtoFile_Fn = "Overwrite"
				RUN "CMD.exe /C ECHO "+$LogtoFile_Data+">"+"$LogtoFile_Loc"
			Case 1
				RUN "CMD.exe /C ECHO "+$LogtoFile_Data+">>"+"$LogtoFile_Loc"
		EndSelect
	EndIf
  EndFunction
 
 Edited by Mart (2015-11-02 05:04 PM)
 Edit Reason: Again, please use code tags when posting code.
 |  
| Top |  |  |  |  
| 
| 
| #210882 - 2015-11-03 11:42 AM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  Mart] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Brilliant thanks guys you were both correct about the path $logonLogs is set to "\\hbs002592\c$\Netlogon\Software_Inventory which I amended to $logonLogs is set to "\\hbs002592\c$\Netlogon\ now it's working and creating the .csv file with the info on software. 
 One thing though the script is not picking up windows 7 enterprise security updates, hotfixes and .net updates. Below is the code I have but it's not working, any ideas? Thanks
 
 ---------------------
 
 
CALL "\\hbs002592\c$\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "\\hbs002592\c$\Netlogon\"
$LogonLogs = "\\hbs002592\c$\Netlogon\"
$uninstallkey="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\"
$PackageList=Chr(34)+"PC"+Chr(34)+","+CHR(34)+"Software_Name"+CHR(34)+","+CHR(34)+"Software_Version"+Chr(34)+","+Chr(34)+"Software_Publisher"+Chr(34)
$Index=0
:PackageLoop
$package=ENUMKEY($uninstallkey, $Index)
If @ERROR = 0
	$SoftwareName=READVALUE($uninstallkey+$package,"Displayname")
	If $SoftwareName<>""
		If InStr($SoftwareName,"Security Update For")=0 AND InStr($SoftwareName,"Update for Windows 7 Enterprise")=0 AND InStr($SoftwareName,"Windows 7 Enterprise Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows 7 Enterprise")=0 AND InStr($SoftwareName,"Windows 7 Enterprise Hotfix")=0
			$SoftwareVersion="N/A"
			$SoftwareVersion=READVALUE($uninstallkey+$package,"DisplayVersion")
			If $SoftwareVersion=""
				$SoftwareVersion="N/A"
			EndIf
			$Publisher="N/A"
			$Publisher=READVALUE($uninstallkey+$package,"Publisher")
			If $Publisher=""
				$Publisher="N/A"
			EndIf
			$PackageList = $PackageList + @CRLF +CHR(34)+ @WKSTA +CHR(34)+ "," +CHR(34)+ $SoftwareName +CHR(34)+ "," +CHR(34)+ $SoftwareVersion+CHR(34)+","+Chr(34)+$Publisher+Chr(34)
		ENDIF
	EndIf
	$Index=$Index+1
	Goto PackageLoop
EndIf
LogtoFile("ForceOverwrite",$LogonLogs+"Software_Inventory\"+@WKSTA+".csv",$PackageList)
-------------------------------
 
 Edited by Glenn Barnas (2015-11-03 12:54 PM)
 Edit Reason: please - Please use CODE tags!!
 |  
| Top |  |  |  |  
| 
| 
| #210883 - 2015-11-03 01:05 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  ] |  
| Glenn Barnas   KiX Supporter
 
       
   Registered:  2003-01-28
 Posts: 4401
 Loc:  New Jersey
 | 
User1234 - Please use code tags around your code - it's difficult to read without them. Use the Code button if you're using the full screen editor, or simply place  around your code. Note that you need a forward slash - /CODE, but I can't display that here.
 Also - GOTO has been long deprecated, despite the simple examples in the user manual. Using While/Loop is recommended, something like:
 Basically, you get the loop control value before entering the loop, do stuff in the loop, and then repeat the line of code to get the control value again just before the loop ends. In this case, the ERROR macro is set before entering the loop, and again at the end, just prior to the loop starting again. When ERROR is set, the loop is not run and the process continues after the Loop statement.$package=ENUMKEY($uninstallkey, $Index)  ; get the FIRST index value
While Not @ERROR
  do stuff...
  $Index = $Index + 1
  $package=ENUMKEY($uninstallkey, $Index)  ; must do this at the end also to get the NEXT index value
Loop
 Glenn
 
_________________________Actually  I am  a Rocket Scientist!    |  
| Top |  |  |  |  
| 
| 
| #210884 - 2015-11-03 03:12 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  Glenn Barnas] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Thanks Glenn but I'm quite new to kix scripting, are you able to show me how I can fit this into my code? Thanks
 
 
CALL "\\hbs002592\c$\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "\\hbs002592\c$\Netlogon\"
$LogonLogs = "\\hbs002592\c$\Netlogon\"
$uninstallkey="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\"
$PackageList=Chr(34)+"PC"+Chr(34)+","+CHR(34)+"Software_Name"+CHR(34)+","+CHR(34)+"Software_Version"+Chr(34)+","+Chr(34)+"Software_Publisher"+Chr(34)
$Index=0
:PackageLoop
$package=ENUMKEY($uninstallkey, $Index)
If @ERROR = 0
	$SoftwareName=READVALUE($uninstallkey+$package,"Displayname")
	If $SoftwareName<>""
		If InStr($SoftwareName,"Security Update For")=0 
			$SoftwareVersion="N/A"
			$SoftwareVersion=READVALUE($uninstallkey+$package,"DisplayVersion")
			If $SoftwareVersion=""
				$SoftwareVersion="N/A"
			EndIf
			$Publisher="N/A"
			$Publisher=READVALUE($uninstallkey+$package,"Publisher")
			If $Publisher=""
				$Publisher="N/A"
			EndIf
			$PackageList = $PackageList + @CRLF +CHR(34)+ @WKSTA +CHR(34)+ "," +CHR(34)+ $SoftwareName +CHR(34)+ "," +CHR(34)+ $SoftwareVersion+CHR(34)+","+Chr(34)+$Publisher+Chr(34)
		ENDIF
	EndIf
	$Index=$Index+1
	Goto PackageLoop
EndIf
LogtoFile("ForceOverwrite",$LogonLogs+"Software_Inventory\"+@WKSTA+".csv",$PackageList)
 Edited by User1234 (2015-11-03 03:13 PM)
 |  
| Top |  |  |  |  
| 
| 
| #210885 - 2015-11-03 03:30 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  ] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
I tried to put what you said into my code but when I run it I get Error : ENDIF without IF! Line 36 
 Not sure if I have put this in correctly?
 
 
 
[color:#330099]CALL "\\hbs002592\c$\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "\\hbs002592\c$\Netlogon\"
$LogonLogs = "\\hbs002592\c$\Netlogon\"
$uninstallkey="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\"
$PackageList=Chr(34)+"PC"+Chr(34)+","+CHR(34)+"Software_Name"+CHR(34)+","+CHR(34)+"Software_Version"+Chr(34)+","+Chr(34)+"Software_Publisher"+Chr(34)
$Index=0
:PackageLoop
$package=ENUMKEY($uninstallkey, $Index)
While Not @ERROR = 0
	$SoftwareName=READVALUE($uninstallkey+$package,"Displayname")
	If $SoftwareName<>""
		If InStr($SoftwareName,"Security Update For")=0 AND InStr($SoftwareName,"Update for Windows XP")=0 AND InStr($SoftwareName,"Windows XP Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows XP")=0 AND InStr($SoftwareName,"Windows 2000 Hotfix")=0 AND InStr($SoftwareName,"Update for Windows 7")=0 AND InStr($SoftwareName,"Windows 7 Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows 7")=0
			$SoftwareVersion="N/A"
			$SoftwareVersion=READVALUE($uninstallkey+$package,"DisplayVersion")
			If $SoftwareVersion=""
				$SoftwareVersion="N/A"
			EndIf
			$Publisher="N/A"
			$Publisher=READVALUE($uninstallkey+$package,"Publisher")
			If $Publisher=""
				$Publisher="N/A"
			EndIf
			$PackageList = $PackageList + @CRLF +CHR(34)+ @WKSTA +CHR(34)+ "," +CHR(34)+ $SoftwareName +CHR(34)+ "," +CHR(34)+ $SoftwareVersion+CHR(34)+","+Chr(34)+$Publisher+Chr(34)
		ENDIF
	EndIf
	$Index=$Index+1
	$package=ENUMKEY($uninstallkey, $Index)
	Loop
EndIf
LogtoFile("ForceOverwrite",$LogonLogs+"Software_Inventory\"+@WKSTA+".csv",$PackageList)[/color]
 |  
| Top |  |  |  |  
| 
| 
| #210886 - 2015-11-03 04:38 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  ] |  
| Henriques   Fresh Scripter
 
 Registered:  2007-09-13
 Posts: 43
 | 
Try changing the Loop statement with the last Endif.
 |  
| Top |  |  |  |  
| 
| 
| #210888 - 2015-11-03 04:44 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  Henriques] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Just tried that (see code below) the csv gets created but doesn't data in it, the csv is blank.
 
 
CALL "\\hbs002592\c$\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "\\hbs002592\c$\Netlogon\"
$LogonLogs = "\\hbs002592\c$\Netlogon\"
$uninstallkey="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\"
$PackageList=Chr(34)+"PC"+Chr(34)+","+CHR(34)+"Software_Name"+CHR(34)+","+CHR(34)+"Software_Version"+Chr(34)+","+Chr(34)+"Software_Publisher"+Chr(34)
$Index=0
:PackageLoop
$package=ENUMKEY($uninstallkey, $Index)
While Not @ERROR = 0
	$SoftwareName=READVALUE($uninstallkey+$package,"Displayname")
	If $SoftwareName<>""
		If InStr($SoftwareName,"Security Update For")=0 AND InStr($SoftwareName,"Update for Windows XP")=0 AND InStr($SoftwareName,"Windows XP Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows XP")=0 AND InStr($SoftwareName,"Windows 2000 Hotfix")=0 AND InStr($SoftwareName,"Update for Windows 7")=0 AND InStr($SoftwareName,"Windows 7 Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows 7")=0
			$SoftwareVersion="N/A"
			$SoftwareVersion=READVALUE($uninstallkey+$package,"DisplayVersion")
			If $SoftwareVersion=""
				$SoftwareVersion="N/A"
			EndIf
			$Publisher="N/A"
			$Publisher=READVALUE($uninstallkey+$package,"Publisher")
			If $Publisher=""
				$Publisher="N/A"
			EndIf
			$PackageList = $PackageList + @CRLF +CHR(34)+ @WKSTA +CHR(34)+ "," +CHR(34)+ $SoftwareName +CHR(34)+ "," +CHR(34)+ $SoftwareVersion+CHR(34)+","+Chr(34)+$Publisher+Chr(34)
		ENDIF
	EndIf
	$Index=$Index+1
	$package=ENUMKEY($uninstallkey, $Index)
	EndIf
Loop
LogtoFile("ForceOverwrite",$LogonLogs+"Software_Inventory\"+@WKSTA+".csv",$PackageList)
 Edited by User1234 (2015-11-03 04:44 PM)
 |  
| Top |  |  |  |  
| 
| 
| #210889 - 2015-11-03 04:53 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  ] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Ok Mart thanks. Below is what I have now after your last comment. When running it now write software info to csv but still not information on windows 7 updates, hotfixes and .net updates.
 How does the code look now to you?
 
 
 
CALL "\\hbs002592\c$\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "\\hbs002592\c$\Netlogon\"
$LogonLogs = "\\hbs002592\c$\Netlogon\"
$uninstallkey="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\"
$PackageList=Chr(34)+"PC"+Chr(34)+","+CHR(34)+"Software_Name"+CHR(34)+","+CHR(34)+"Software_Version"+Chr(34)+","+Chr(34)+"Software_Publisher"+Chr(34)
$Index=0
:PackageLoop
$package=ENUMKEY($uninstallkey, $Index)
While Not @ERROR
	$SoftwareName=READVALUE($uninstallkey+$package,"Displayname")
	If $SoftwareName<>""
		If InStr($SoftwareName,"Security Update For")=0 AND InStr($SoftwareName,"Update for Windows XP")=0 AND InStr($SoftwareName,"Windows XP Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows XP")=0 AND InStr($SoftwareName,"Windows 2000 Hotfix")=0 AND InStr($SoftwareName,"Update for Windows 7")=0 AND InStr($SoftwareName,"Windows 7 Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows 7")=0
			$SoftwareVersion="N/A"
			$SoftwareVersion=READVALUE($uninstallkey+$package,"DisplayVersion")
			If $SoftwareVersion=""
				$SoftwareVersion="N/A"
			EndIf
			$Publisher="N/A"
			$Publisher=READVALUE($uninstallkey+$package,"Publisher")
			If $Publisher=""
				$Publisher="N/A"
			EndIf
			$PackageList = $PackageList + @CRLF +CHR(34)+ @WKSTA +CHR(34)+ "," +CHR(34)+ $SoftwareName +CHR(34)+ "," +CHR(34)+ $SoftwareVersion+CHR(34)+","+Chr(34)+$Publisher+Chr(34)
		ENDIF
	EndIf
	$Index=$Index+1
	$package=ENUMKEY($uninstallkey, $Index)
	Loop
LogtoFile("ForceOverwrite",$LogonLogs+"Software_Inventory\"+@WKSTA+".csv",$PackageList)
 |  
| Top |  |  |  |  
| 
| 
| #210891 - 2015-11-03 05:22 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  Mart] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Thanks Mart 
 I found that Winows 7 updates are now stored in the registry under,
 
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages
 
 But how could I include the script to read this info as well. Current script is what I have below.
 
 
 
CALL "\\hbs002592\c$\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "\\hbs002592\c$\Netlogon\"
$LogonLogs = "\\hbs002592\c$\Netlogon\"
$uninstallkey="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\"
$PackageList=Chr(34)+"PC"+Chr(34)+","+CHR(34)+"Software_Name"+CHR(34)+","+CHR(34)+"Software_Version"+Chr(34)+","+Chr(34)+"Software_Publisher"+Chr(34)
$Index=0
$package=ENUMKEY($uninstallkey, $Index)
While Not @ERROR
	$SoftwareName=READVALUE($uninstallkey+$package,"Displayname")
	If $SoftwareName<>""
		If InStr($SoftwareName,"Security Update For")=0 AND InStr($SoftwareName,"Update for Windows XP")=0 AND InStr($SoftwareName,"Windows XP Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows XP")=0 AND InStr($SoftwareName,"Windows 2000 Hotfix")=0 AND InStr($SoftwareName,"Update for Windows 7")=0 AND InStr($SoftwareName,"Windows 7 Hotfix")=0 AND InStr($SoftwareName,"Hotfix for Windows 7")=0
			$SoftwareVersion="N/A"
			$SoftwareVersion=READVALUE($uninstallkey+$package,"DisplayVersion")
			If $SoftwareVersion=""
				$SoftwareVersion="N/A"
			EndIf
			$Publisher="N/A"
			$Publisher=READVALUE($uninstallkey+$package,"Publisher")
			If $Publisher=""
				$Publisher="N/A"
			EndIf
			$PackageList = $PackageList + @CRLF +CHR(34)+ @WKSTA +CHR(34)+ "," +CHR(34)+ $SoftwareName +CHR(34)+ "," +CHR(34)+ $SoftwareVersion+CHR(34)+","+Chr(34)+$Publisher+Chr(34)
		ENDIF
	EndIf
	$Index=$Index+1
	$package=ENUMKEY($uninstallkey, $Index)
	Loop
LogtoFile("ForceOverwrite",$LogonLogs+"Software_Inventory\"+@WKSTA+".csv",$PackageList)
 |  
| Top |  |  |  |  
| 
| 
| #210892 - 2015-11-04 09:24 AM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  ] |  
| Mart   KiX Supporter
 
       
   Registered:  2002-03-27
 Posts: 4673
 Loc:  The Netherlands
 | 
You could simple enumerate the extra registry key and loop through all found keys just like you do already with the first registry key. A simple copy, paste would do the trick as long as you change the registry key in the code you copy and paste so it takes the other registry key.Doing a simple copy and paste might not be the cleanest way but if you are new to kix it certainly is the easiest way. I also made a few small changes to keep everything readable (break the long lines into several lines) and used a shortcut to get to the registry key (HKLM instead of HKEY_LOCAL_MACHINE).
 
 Something like (untested):
 
 
Call "\\hbs002592\c$\Netlogon\UDF_Global.kix"
$UpdatesScripts_Loc = "\\hbs002592\c$\Netlogon\"
$LogonLogs = "\\hbs002592\c$\Netlogon\"
;Enumerate keys in HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\
$uninstallkey = "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\"
$PackageList = Chr(34) + "PC" + Chr(34) + "," + Chr(34) + "Software_Name" + Chr(34) + "," + Chr(34) + "Software_Version" + Chr(34) + "," + Chr(34) + "Software_Publisher" + Chr(34)
$Index = 0
$package = EnumKey($uninstallkey, $Index)
While Not @ERROR
	$SoftwareName = ReadValue($uninstallkey + $package, "Displayname")
	If $SoftwareName <> ""
		If InStr($SoftwareName, "Security Update For") = 0 And InStr($SoftwareName, "Update for Windows XP") = 0
				And InStr($SoftwareName, "Windows XP Hotfix") = 0 And InStr($SoftwareName, "Hotfix for Windows XP") = 0
				And InStr($SoftwareName, "Windows 2000 Hotfix") = 0 And InStr($SoftwareName, "Update for Windows 7") = 0
				And InStr($SoftwareName, "Windows 7 Hotfix") = 0 And InStr($SoftwareName, "Hotfix for Windows 7") = 0
			$SoftwareVersion = "N/A"
			$SoftwareVersion = ReadValue($uninstallkey + $package, "DisplayVersion")
			If $SoftwareVersion = ""
				$SoftwareVersion = "N/A"
			EndIf
			$Publisher = "N/A"
			$Publisher = ReadValue($uninstallkey + $package, "Publisher")
			If $Publisher = ""
				$Publisher = "N/A"
			EndIf
			$PackageList = $PackageList + @CRLF + Chr(34) + @WKSTA + Chr(34) + "," + Chr(34) + $SoftwareName + Chr(34) + "," + Chr(34) + $SoftwareVersion + Chr(34) + "," + Chr(34) + $Publisher + Chr(34)
		EndIf
	EndIf
	$Index = $Index + 1
	$package = EnumKey($uninstallkey, $Index)
Loop
;Enumerate keys in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages
$uninstallkey = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages"
$Index = 0
$package = EnumKey($uninstallkey, $Index)
While Not @ERROR
	$SoftwareName = ReadValue($uninstallkey + $package, "Displayname")
	If $SoftwareName <> ""
		If InStr($SoftwareName, "Security Update For") = 0 And InStr($SoftwareName, "Update for Windows XP") = 0
			And InStr($SoftwareName, "Windows XP Hotfix") = 0 And InStr($SoftwareName, "Hotfix for Windows XP") = 0
			And InStr($SoftwareName, "Windows 2000 Hotfix") = 0 And InStr($SoftwareName, "Update for Windows 7") = 0
			And InStr($SoftwareName, "Windows 7 Hotfix") = 0 And InStr($SoftwareName, "Hotfix for Windows 7") = 0
			$SoftwareVersion = "N/A"
			$SoftwareVersion = ReadValue($uninstallkey + $package, "DisplayVersion")
			If $SoftwareVersion = ""
				$SoftwareVersion = "N/A"
			EndIf
			$Publisher = "N/A"
			$Publisher = ReadValue($uninstallkey + $package, "Publisher")
			If $Publisher = ""
				$Publisher = "N/A"
			EndIf
			$PackageList = $PackageList + @CRLF + Chr(34) + @WKSTA + Chr(34) + "," + Chr(34) + $SoftwareName + Chr(34) + "," + Chr(34) + $SoftwareVersion + Chr(34) + "," + Chr(34) + $Publisher + Chr(34)
		EndIf
	EndIf
	$Index = $Index + 1
	$package = EnumKey($uninstallkey, $Index)
Loop
LogtoFile("ForceOverwrite", $LogonLogs + "Software_Inventory\" + @WKSTA + ".csv", $PackageList)
_________________________Mart
 
 - Chuck Norris once sold ebay to ebay on ebay.
 |  
| Top |  |  |  |  
| 
| 
| #210894 - 2015-11-04 10:51 AM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  Mart] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Thanks Mart
 You mentioned the if the windows 7 updates have a display within the registry. I checked and the under the location below it doesn't have a displayname for each of the updates.
 
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages
 
 |  
| Top |  |  |  |  
| 
| 
| #210895 - 2015-11-04 01:19 PM  Re: Windows 7 script - Error failed to find/open script [Log.kix]
[Re:  ] |  
| User1234 
User1234 Unregistered
 
 
 
 | 
Putting the security updates aside for now.
 One issue that I have found with the software_inventory reading the uninstall key on windows 7 PC's, is that it doesn't read all the software displayname's even though all the software have displayname. If does log most of the software but not all.
 
 I ran the script on an XP PC with the same code and it picks out all the software within the uninstall key within the registry.
 
 Anyone have any idea why it would not log all the software with displaynames on the windows 7 PC to the csv? Thanks
 
 |  
| Top |  |  |  |  
 Moderator:  Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart
 
 | 
| 
 
| 0 registered
and 739 anonymous users online. 
 | 
 |  |