Rather than shelling out to a DOS command, you can use code to send the ZPL directly to the printer. Here's the class I use to do that:
Raw printer helper · GitHub[
^]
It's in C#, but you can either convert it, or compile it into a library and call it from your VB.NET code.
RawPrinterHelper.SendStringToPrinter("Name of the printer to use", zplStringToPrint, "My barcode")
As Griff said, this code is running on the server, so you'll need to make sure the ZPL printer is installed on the server, and accessible to the IIS account.