我在将此Powershell脚本转换为VBScript时遇到了一些麻烦。
我的VBScript开头的所有Echo语句都显示正确的数据,因此我知道我的初始WMI查询正在运行,但我不确定我在{{1}中做错了什么功能。
我已经看到其他网站建议使用fQueryModem
或MSCOMMLIB
SerialPort类,但我尝试了这些选项并且无法使用。
当我第一次启动脚本时,我没有收到任何错误,但是当我尝试回显存储在调用该函数的变量中的值时没有输出。任何后续的脚本启动都会引发此错误:System.IO.Port
另外,我不确定我是否正确转换了采用正则表达式模式的脚本部分并将其与"The requested resource is in use Code: 800700AA Source: (null)"
匹配。
拜托,欢迎任何帮助或建议,因为这让我头疼了一个星期。
Powershell的:
tVar
的VBScript:
Function fQueryModem($sQueryString, $sRegExp) {
$oComPort = New-Object System.IO.Ports.SerialPort $sComPortNumber,$sComPortSpeed,None,8,1
$oComPort.Open()
$oComPort.Write("AT")
$oComPort.Write($sQueryString + "`r")
Start-Sleep -m 50
$tVar = $oComPort.ReadExisting()
$tVar = ($tVar -replace "OK","").trim()
$oComPort.Close()
If (!($sRegExp -eq "")) {$tVar -Match $sRegExp|Out-Null; $tVar = $Matches[0]}
return $tVar
}
#Populate Variables using fQueryModem Function Call
$sMEID = fQueryModem "+CGSN" "\d{15}"
$sModemModel = fQueryModem "+CGMM" "" #Match Everything
$sPhoneNumber = fQueryModem "+CNUM" "\d{11}"
$sSIM = fQueryModem "+ICCID" "\d{20}"
#$sFirmwareDate = fQueryModem "+GMR" "\d{4}/\d{2}/\d{2}"
$sFirmwareDate = fQueryModem "+GMR" ""