How to open a command prompt on a remote computer

There are three tools that can do this:

  • PSExec – Not redistributable but free for download. No source code.
  • RemCom – BSD Licensed but not really maintained and I haven’t been able to get it to work in Windows 7. Source code available. Uses its own command line.
  • PAExec – Free to distribute but no source code. Uses same command line as PSExec.

So they all use the same command line to connect to a remote computer. I think I am going to go with PAExec because it is newer, maintained, distributable, and works in Windows 7.

PAExec \\RemotePC cmd.exe

However, with that command line, it can be confusing to have a command prompt open on your machine without a way to know it is actually a command prompt for a remote computer so it is a good idea to add a prompt.

PAExec \\RemotePC cmd.exe /k prompt $C%computername%$F$S$p$G

I hope this helps.

How to connect to the LANDesk MBSDK using C#?

This article is to demonstrate to LANDesk admins how to connect to the LANDesk MBSDK with C#.

Prerequisites

LANDesk

  1. A LANDesk Core Server accessible via the network.
  2. Credentials to connect to the LANDesk Core Server.

Basically if you can hit the MBSDK with a browser and login, you are good to go.
http://CoreServer/mbsdkservice/msgsdk.asmx

Visual Studio

  1. It is assumed that you have Visual Studio Professional installed

Step 1 – Create a Visual Studio Project

  1. In Visual Studio, Go to File | New | Project.
  2. Select that project type.
    Note: For this example I chose Console Application.
  3. Give the Project a name.
    Note: I named my project TalkToMBSDK.
  4. Click OK.
    Note: I went ahead and left my client application configured for .NET 4 even though I know the server currently is .NET 3.5 Sp1.

Step 2 – Add a Web Reference to the MBSDK

  1.  In you new Visual Studio project, right-click on the project and click Add Service Reference.
    Note: We actually need a Web  Reference but this is how we get there.
  2. Click Advanced on the bottom left.
  3. Click on Add Web Reference, also on the bottom left.
  4. Enter the URL to the MBSDK on your Core Server: http://CoreServer/mbsdkservice/msgsdk.asmx
  5. Change the Web Reference Name (on the right) to mbsdk.
    Note: You can name it whatever you want, but because there is an object called MBSDK (all uppercase), I chose to make the namespace mbsdk (all lowercase).
  6. Click Add Reference.

Step 3 – Test using the LANDesk SDK

  1. In the Program.cs add the following code.  You next steps are in the code comments.
using System.Net;
using TalkToMBSDK.mbsdk;

namespace TalkToMBSDK
{
    class Program
    {
        static void Main(string[] args)
        {
            // Step 1 - You need to use your credentials
            string user = "SomeUser";
            string password = "SomePassword";
            string domain = "SomeDomain.tld";

            // Step 2 - Configure a CredentialCache object with the URL and your creds
            string uri = "http://CoreServer/MBSDKService/MsgSDK.asmx";
            CredentialCache MyCredentialCache = new System.Net.CredentialCache();
            MyCredentialCache.Add(new System.Uri(uri), "NTLM", new NetworkCredential(user, password, domain));

            // Step 3 - Create an MBSDK object and set its CredentialCache object to the one you just created
            MBSDK sdk = new MBSDK();
            sdk.Credentials = MyCredentialCache;

            // Step 4 - Go ahead an call methods from the MBSDK
            // Note: If you get 401 unathorized, are you a LANDesk Administrator?
            string[] configs = sdk.GetClientConfigurations();
            DeviceList list = sdk.ListMachines("");
            string who = sdk.WhoAmI();
        }
    }
}

Have fun LANDesk Admins.

LANDesk Support Tools vs Windows Side by Side (SXS)

I work for LANDesk, in case you have forgotten, and I have this LANDesk add-on called LANDesk Support Tools.

So I couldn’t figure out why my Send Message command in my LANDesk Support Tools wouldn’t work in 64 bit. It kept saying that msg.exe wasn’t on the remote client. Of course, I checked and it was right there in c:\windows\system32\msg.exe.

However, I was able to spend some more time on this and it turns out that if a 32 bit application (such as the LANDesk agent) goes to work, an executable that only exists in 64 bit form, such as msg.exe, is not exactly “visible” to the 32 bit application.

So I have to call it using c:\windows\sysnative\msg.exe. Now I just have to figure out how best to implement this difference in my LANDesk Support Tools so the command works for both 32 bit and 64 bit versions of Windows 7.

A WPF front-end for LDPing

I wrote a front-end to LDPing last week-end. You can check it out here:

LDPing

So I was writing a WPF front-end for LDPing, which is a method of querying a LANDesk Agent for its computer name and Inventory Id. There is a button that you click to launch the ping and I couldn’t get the thing to enable…Anyway, I figured it out and posted the resolution here:

Refreshing a button enabled/disabled by RelayCommand.CanExecute()

So here is a screen shot of LDPing.