I am trying to add some kind of Interface class to an existing VB Project in order to be able to acces the IMS services.
My current solution uses the command line interface, which works pretty fine. The only problems I have are related to "im createcontent" and "im createissue". In those cases I want to know the ID of the created objects but the streamreader object in my software seems so be empty (please see code snippet)
VB.NET Code of CmdLineInterface Function:
Private Function RunCommandCom(command As String, arguments As String) As String()
Dim p As Process = New Process()
Dim pi As ProcessStartInfo = New ProcessStartInfo()
Dim output As String
pi.Arguments = " " + "/c" + " " + command + " " + arguments
pi.FileName = "cmd.exe"
pi.RedirectStandardOutput = True
pi.CreateNoWindow = True
pi.WindowStyle = ProcessWindowStyle.Hidden
pi.UseShellExecute = False
p.StartInfo = pi
p.Start()
Using streamReader As System.IO.StreamReader = p.StandardOutput
output = streamReader.ReadToEnd()
p.WaitForExit()
End Using
If output Is "" Then
Return Nothing
Else
Return output.Replace(Chr(13), "").Split(Chr(10))
End If
End Function
The RunCommandCom() function works fine for querys. Also calling other executables like "ipconfig" works fine. What is the difference when calling "im createcontent"? Is it possible to read back the ID of the created object with this solution?
Ok, I found the problem. Some funny developer decided to send the output of "im createcontent" and "im createissue" to the stderr stream instead of sending it to stdout.
Is this a feature or a bug?
Probably by design - though, it seems confusing design. Is it status info that is being returned? I think the CLI directs all the "status" return info, to stderr. That may be what you're seeing.
Some of this, is why customers were pointed to the API over the years, where possible.
I don't think this is just a status info as I create some issue/content and the returned text contains the ID of this issue/content. So for my understanding this should be sent to stdout. But it's ok as long as I know that i have to search for this infroamtion in the stderr sometimes 🙂
And yes, after finishing my work I also thought about using the API next time. But for a quick script, the CLI is perfect...
