O problema com o seu script é que você declara $ IPAddress em sua função, mas especifica -portname quando você chama a função. Altere a função para usar $ PortName ou use -IPAddress ao chamar a função.
Pessoalmente, mudei sua função para usar [string] $ PortName
Aqui está sua função funcionando corretamente
function CreatePrinter {
Param (
[string]$PrinterName,
[string]$DriverName,
[string]$PortName,
[string]$Location,
[string]$Comment
)
$print = [WMICLASS]"Win32_Printer"
$newprinter = $print.createInstance()
$newprinter.Drivername = $DriverName
$newprinter.PortName = "IP_$PortName"
$newprinter.Shared = $true
$newprinter.Sharename = $PrinterName
$newprinter.Location = $Location
$newprinter.Comment = $Comment
$newprinter.DeviceID = $PrinterName
Write-Host "Creating Printer $printername" -foregroundcolor "green"
$newprinter.Put()
}
$printerport1 = "10.10.10.0"
CreatePrinterPort -IPAddress $printerport1
CreatePrinter -PrinterName "Print1" -DriverName "HP LaserJet 4300 PCL 6" -PortName $printerport1 -Location "Office" -Comment "Test comment"