Is there any tool that can do c# code to powershell

torres picture torres · May 31, 2013 · Viewed 7.6k times · Source

I was wondering if there is an online tool that can convert c# code to powershell cmdlet code. I have following code that i need to have it powershell. I dont have visual studio to turn this into an exe or dll. any help or ideas would be great.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace CopyUsersBetweenGroupsInSharepointByRR
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("This tool will copy the users from one group to another group");
            Console.WriteLine("Please enter the URL of the site where your groups are available");
            String siteUrl = Console.ReadLine();
            using (SPSite site = new SPSite(siteUrl))
            {
                try
                {
                    SPWeb web = site.OpenWeb();
                    Console.WriteLine("Please enter the name of the source group");
                    String sourceGroupName = Console.ReadLine();
                    Console.WriteLine("Please enter the name of the destination group");
                    String destinationGroupName = Console.ReadLine();
                    SPGroup sourceGroup = web.Groups[sourceGroupName];
                    SPGroup destinationGroup = web.Groups[destinationGroupName];
                    SPUserCollection sourceUsers = sourceGroup.Users;
                    SPUserInfo[] sourceUserInfoArray = new SPUserInfo[sourceUsers.Count];
                    for (int i = 0; i < sourceUsers.Count; i++)
                    {
                        sourceUserInfoArray[i] = new SPUserInfo();
                        sourceUserInfoArray[i].LoginName = sourceUsers[i].LoginName;
                        sourceUserInfoArray[i].Name = sourceUsers[i].Name;
                    }
                    destinationGroup.Users.AddCollection(sourceUserInfoArray);
                    destinationGroup.Update();
                    web.Update();
                    Console.WriteLine("Operation Completed Successfully");
                    Console.ReadLine();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Console.ReadLine();
                }
            }
        }
    }
}

Answer

Sharken picture Sharken · May 31, 2013

The fastest way to do it is to write the PowerShell code yourself. Below is how the code will look in PowerShell, i would say that most C# developers should be able to grasp the concepts of converting C# code to PowerShell in a very short time.

Functions can be a little odd at the beginning, since the usual PS syntax is

myFunction Parameter1 Parameter2

Also you really should install PowerShell 3.0 and use the Windows PowerShell ISE tool to develop the code. Anyways it should not take you more than 1-2 hours to get your C# code running along in PowerShell.

[System.Reflection.Assembly]::LoadWithPartialName(”Microsoft.SharePoint”) 
Write-Host "This tool will copy the users from one group to another group"
Write-Host "Please enter the URL of the site where your groups are available"
[string] $siteUrl = [Console]::ReadLine()

$site = new-object Microsoft.SharePoint.SPSite($siteUrl) 
try
{
  $web = $site.OpenWeb()
  Write-Host "Please enter the name of the source group"
  [string] $sourceGroupName = [Console]::ReadLine()
  Write-Host "Please enter the name of the destination group"
  [string] $destinationGroupName = [Console]::ReadLine()
  $sourceUsers = $web.Groups[$sourceGroupName]

  (and so on)
}
catch
{
  Write-Error ("Failed to copy sharepoint users." + $_)
}