VBScript SDK – Bookmark
I’m always losing the Windows Scripting Host Reference section. So here is my bookmark
Useful AWK oneliner
awk ‘/:/ {name=$1} ; /lastu/ {print name $3}’ /input/filename
Download ncat Win32 (precompiled)
December 2012 Update: A newer precompiled version is available here: http://nmap.org/ncat/
So I was having a hunt around for the modified version of Netcat which is called Ncat developed by the lovely people who wrote the infamous port scanner Nmap. I needed the Win32 binaries for it and after a brief internet trowel it couldn’t be found. So I downloaded the source and compiled it and made it presentable for download for everyone else.
Ncat-5.21 Packed with UPX Packer Ncat-5.21 without UPX Packer
Happy Ncatting :-)
Printer Migration Script
Here is a VB script which is useful for migrating users from one print server to another. This needs to be run on each workstation (I usually call it from a login script). No credit taken for the script and I can’t remember where I got it from (Sorry)
' put in the server names here (keep the quotes!) MovePrinters "OLD-SERVERNAME", "NEW-SERVERNAME" ' ********************************************* ' Move printers to new server ' ********************************************* Sub MovePrinters(OldServer, NewServer) ' Loops through all network printers and moves all printers ' on "OldServer" to the same printername on "NewServer". dim WshNetwork, oPrinters, i, PrinterPath, DefaultPrinter, PrinterList ' Check that WSH version is new enough: If CDbl(Replace(wscript.version,".",",")) < CDbl(5.6) Then MsgBox "Automatic printer migration is not available for" & _ " this computer." & vbCrLf & _ "Please migrate printers manually." & vbCrLf & _ "The new printer server name is """ & NewServer & """", _ vbOKOnly + vbCritical, "Windows Scripting Host is too old" wscript.quit 1 End If Set WshNetwork = WScript.CreateObject("WScript.Network") Set PrinterList = CreateObject("Scripting.Dictionary") ' Get the default printer before we start deleting: DefaultPrinter = GetDefaultPrinter ' Get a list of printers to work with: ' (We cannot modify the collection while looping through it) Set oPrinters = WshNetwork.EnumPrinterConnections For i = 1 to oPrinters.Count Step 2 PrinterList.Add oPrinters.Item(i), "x" Next ' i ' Loop through the printer list and migrate mathching ones: For Each PrinterPath In PrinterList.Keys If StrComp(ServerName(PrinterPath), OldServer, 1) = 0 Then WshNetwork.RemovePrinterConnection PrinterPath, True, True On Error Resume next WshNetwork.AddWindowsPrinterConnection "" & NewServer & "" & _ ShareName(PrinterPath) 'If Err.Number = -2147023095 Then ' MsgBox "The printer """ & ShareName(PrinterPath) & _ ' """ does not exist on server """ & NewServer & """." & vbCrLf & _ ' "The printer has been removed.", vbOKonly + vbExclamation, _ ' "Missing printer" 'End If On Error goto 0 End If Next 'Set the default printer: If ServerName(DefaultPrinter) = OldServer Then On Error Resume Next WshNetwork.SetDefaultPrinter "" & NewServer & "" & _ ShareName(DefaultPrinter) 'If Err.Number = -2147352567 Then 'MsgBox "Your default printer did not exist, and has been deleted.", _ ' vbOKonly + vbInformation, "Invalid default printer" 'End If On Error goto 0 End If End Sub ' MovePrinters Function GetDefaultPrinter() ' Returns the UNC path to the current default printer Dim oShell, sRegVal, sDefault Set oShell = CreateObject("WScript.Shell") sRegVal = _ "HKCUSoftwareMicrosoftWindows NTCurrentVersionWindowsDevice" sDefault = "" On Error Resume Next sDefault = oShell.RegRead(sRegVal) sDefault = Left(sDefault ,InStr(sDefault, ",") - 1) On Error Goto 0 GetDefaultPrinter = sDefault End Function Function ServerName(sPrinterPath) Dim aPrinterPath ServerName = "" If Left(sPrinterPath, 2) = "" Then aPrinterPath = Split(sPrinterPath, "") ServerName = aPrinterPath(2) End If End Function Function ShareName(sPrinterPath) Dim aPrinterPath ShareName = "" If Left(sPrinterPath, 2) = "" Then aPrinterPath = Split(sPrinterPath, "") ShareName = aPrinterPath(3) End If End Function
VBScript based wget
I was using Windows based SSH box the other day and I needed to get some files, but the only options on a limited Windows (XP) box are ftp and the files I wanted were on HTTP so I hunted around and added to a vbscript which created a Wget type script which works via VBScript (which is avaliable on a limited XP Box)
Something else which is good about this script is that it uses Internet Explorer Proxy settings automatically, so if you are behind a corporate firewall and need to go through a proxy it does this automatically for you!
' VBScript based WGET - Changes by Cam McKenzie ' cam.mckenzie --at-- gmail --dot-- com ' USAGE: cscript wget.vbs http://somewhere.com/somefile.zip ' Credit to Chrissy at blog.netnerds.net for the hardwork ' URL to download from command line strFileURL = Wscript.Arguments.Item(0) ' Find current directory Dim sCurPath sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".") ' Get filename from URL Dim UrlArray UrlArray = Split(strFileURL, "/", -1,1) TopOfArray = UBound(UrlArray) ' Where to save the file strHDLocation = sCurPath & "" & UrlArray(TopOfArray) ' Fetch the file Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") objXMLHTTP.open "GET", strFileURL, false objXMLHTTP.send() If objXMLHTTP.Status = 200 Then Set objADOStream = CreateObject("ADODB.Stream") objADOStream.Open objADOStream.Type = 1 'adTypeBinary objADOStream.Write objXMLHTTP.ResponseBody objADOStream.Position = 0 'Set the stream position to the start Set objFSO = Createobject("Scripting.FileSystemObject") If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation Set objFSO = Nothing objADOStream.SaveToFile strHDLocation objADOStream.Close Set objADOStream = Nothing End if Set objXMLHTTP = Nothing