Returns information about the serial ports installed on a computer.

This script was tested using Object REXX 2.1.0 for Microsoft Windows, available from IBM.

Object REXX
strComputer = "."
objWMIService = .OLEObject~GetObject("winmgmts:\\"||strComputer||"\root\CIMV2")
do objItem over objWMIService~ExecQuery("Select * from Win32_SerialPort")
    say "Availability:" objItem~Availability
    say "Binary:" objItem~Binary
    z = objItem~Capabilities
    if .NIL <> z then
        do x over z
            say objProperty.Name ": " x
    z = objItem~CapabilityDescriptions
    if .NIL <> z then
        do x over z
            say objProperty.Name ": " x
    say "Caption:" objItem~Caption
    say "Config Manager Error Code:" objItem~ConfigManagerErrorCode
    say "Config Manager User Config:" objItem~ConfigManagerUserConfig
    say "Creation Class Name:" objItem~CreationClassName
    say "Description:" objItem~Description
    say "Device ID:" objItem~DeviceID
    say "Error Cleared:" objItem~ErrorCleared
    say "Error Description:" objItem~ErrorDescription
    say "Install Date:" objItem~InstallDate
    say "Last Error Code:" objItem~LastErrorCode
    say "Max Baud Rate:" objItem~MaxBaudRate
    say "Maximum Input Buffer Size:" objItem~MaximumInputBufferSize
    say "Maximum Output Buffer Size:" objItem~MaximumOutputBufferSize
    say "Max Number Controlled:" objItem~MaxNumberControlled
    say "Name:" objItem~Name
    say "OS Auto Discovered:" objItem~OSAutoDiscovered
    say "PNP Device ID:" objItem~PNPDeviceID
    z = objItem~PowerManagementCapabilities
    if .NIL <> z then
        do x over z
            say objProperty.Name ": " x
    say "Power Management Supported:" objItem~PowerManagementSupported
    say "Protocol Supported:" objItem~ProtocolSupported
    say "Provider Type:" objItem~ProviderType
    say "Settable Baud Rate:" objItem~SettableBaudRate
    say "Settable Data Bits:" objItem~SettableDataBits
    say "Settable Flow Control:" objItem~SettableFlowControl
    say "Settable Parity:" objItem~SettableParity
    say "Settable Parity Check:" objItem~SettableParityCheck
    say "Settable RLSD:" objItem~SettableRLSD
    say "Settable Stop Bits:" objItem~SettableStopBits
    say "Status:" objItem~Status
    say "Status Info:" objItem~StatusInfo
    say "Supports 16-Bit Mode:" objItem~Supports16BitMode
    say "Supports DTRDSR:" objItem~SupportsDTRDSR
    say "Supports Elapsed Timeouts:" objItem~SupportsElapsedTimeouts
    say "Supports Int Timeouts:" objItem~SupportsIntTimeouts
    say "Supports Parity Check:" objItem~SupportsParityCheck
    say "Supports RLSD:" objItem~SupportsRLSD
    say "Supports RTSCTS:" objItem~SupportsRTSCTS
    say "Supports Special Characters:" objItem~SupportsSpecialCharacters
    say "Supports XOn XOff:" objItem~SupportsXOnXOff
    say "Supports XOn XOffSet:" objItem~SupportsXOnXOffSet
    say "System Creation Class Name:" objItem~SystemCreationClassName
    say "System Name:" objItem~SystemName
    say "Time Of Last Reset:" objItem~TimeOfLastReset