What's a difference between Azure PowerShell commandlets and Command-Line Tools? - powershell

What are the differences between Azure PowerShell Commandlets and Command-Line Tools?
is there a difference in capabilities?
are new versions published at around the same time?
is one of them the 'preferred' way to manage Azure resources?
I am interested in managing web sites, VMs and cloud services from developer's machine and also from Ci server (TeamCity/MSBuild - starting / stopping VMs).
I've noticed that Command-Line Tools is just a small ~5MB download while PowerShell commandlets have several dependencies (~22MB) and June 2013 version still relies on Azure SDK 1.8 October 2012.

The PowerShell cmdlets work only in PowerShell (on Windows machines). They're great for automating several concurrent tasks (i.e. scripting out an entire environment), or carrying out single tasks.
The command-line tools are cross platform tools (work on Windows, Linux, etc.) These are written in node.js. They're not as good for scripting multiple actions, but are great for developers that prefer the command line to execute tasks (instead of going to the Azure management portal).
As far as I can tell, they are not on a synced release schedule. You can follow the progress of each via their github.com repositories (https://github.com/WindowsAzure/azure-sdk-tools-xplat and https://github.com/WindowsAzure/azure-sdk-tools).

It appears that Powershell is a wrapper for the node tools. If you get an error in PS it will reference a .js file.
To test this simply allow your authentication token to expire without a login. The error message in the .json file it sends you to indicates a failure in a Javascript file.

The release schedule for WIndows Azure PowerShell and the command line tools are both approximately once every 3 weeks. You can get the latest from the github repo at any time (as shown above).

Related

Is there any method for vm update in azure except update management tool in automation account

I need to develop powershell script for automating vm patches updating in azure. I know we can do it by using azure update management but is there any other way to do it? I'm new to it please help.
You could refer to this Virtual Machines - Update to update a virtual machine.
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}?api-version=2020-06-01
In addition, we could also do this in the UI and capture the request URL and request Body in the Network via F12, then convert it to power shell script.
As per this Microsoft Q&A platform question, you may use PSWindowsUpdate powershell module cmdlets.
And, if you are looking for a way to implement a way by removing dependency on Azure Automation and Azure Log Analytics then check Automatic VM guest patching (Preview).
Also, I would love to know the reason for trying to manually develop script for automating VM patches when the same is already available to us in the form of Update management solution (that is integrated with Azure Automation and Azure Log Analytics).

Azure - SSMS - PowerShell

I am working through my first Azure HDInsight tutorial. Can I do this without installing Azure Remote PowerShell on my local computer?
Can I use SSMS (2008R2) to run the PowerShell? My first attempt at that led me down the path of using a Database in Azure, but I do not think that is what I want to do (the tutorial describes setting Storage (not a Database) and then an HDInsight instance to interact with that Storage).
I am doing this tutorial: http://www.windowsazure.com/en-us/manage/services/hdinsight/get-started-hdinsight/
Thank you.
While you can use SQL Server and HDInsight together as part of a full pipeline, for the purposes of the getting started tutorial you want to think of them as two very different things.
The Storage referred to, is a standard Windows Azure Storage account, based on blobs. These then form a backing file system for the HDInsight cluster.
As far as using PowerShell goes, it is definitely the best, and easiest way to submit jobs to an HDInsight cluster. I would also recommend using a regular PowerShell console, or the PowerShell ISE to work with HDInsight as well, rather than the one available through SSMS, since the SSMS version won't load all the Azure modules by default.
There are other ways to submit jobs if PowerShell is not your thing (if you are on OS X or Linux for instance). You can use the REST API provided by WebHCAT (documentation). If you're on Windows, and prefer C# to PowerShell, you can also use the Windows Azure HDInsight Management Client from the Microsoft Hadoop SDK to submit jobs (available on codeplex and nuget). These will need you to break out Visual Studio and write a short console program to submit your job, so may be a bit heavy unless you're doing full on C# streaming Map Reduce, and so are already there.
If you're after a GUI based approach to job submission to HDInsight, you're out of luck at the moment, but your might like to check out what my team is working on at Red Gate, which will help you with submitting Hive and Pig jobs.

Running PowerShell scripts programmatically in Azure Web Sites

I want to run PS scripts in C# exactly along the lines of Sample
This works on a Cloud Service (Web Role), on a standard server (with execution policy disabled), but not in a Azure Web Site.
Anyone know why this is so?
I don't know of any official documentation on the issue but there are multiple answers on the related forums where Microsoft employees talk about the limitations of not being able/allowed to launch external processes in Windows Azure Web Sites. See
PHP - Warning: exec(): Unable to fork
PDF Generator failing on Azure Website but not development machine
Recommended HTML to PDF Generator that works on Azure Website Reserved mode with Full Trust
You are probably trying to do that with your powershell script.
You could verify if that is in fact your issue by catching and looking at the exception(s) which should relate to security policies/permissions.

csmanage or powershell commandlets, which one to choose?

After looking around for some information about managing my azure app i found csmanage and powershell commandlets. What are the difference between these applications and which one to choose?
The basis of Windows Azure Services management is REST API and beauty of using REST API is that you can wrap REST in any programming language as longs as there is networking and security infrastructure available. Most of the tools you mentioned above are using REST API underneath and using Windows Azure Service Management API. CSMANAGE and PowerShell Cmdlets are using Windows Azure Service Management API to manager Windows Azure subscriptions. You can learn more about Service Management API here.
There is also another tool call WAPMMC (Windows Azure Platform Management Tool (MMC) which is also built upon Service Management API.
Besides it there are 3rd party tools which are built using Service management API i.e. Cerebrata Powershell cmdlets.
Comparing all of above, I would say Windows Azure Powershell Cmdlets is the most powerful tool among all of these and it has been updated with bug fixes and many more features added frequently. To use it in your machine you just need to download powershell cmdlets and Windows Azure SDK in your machine as these are required.
http://wappowershell.codeplex.com/
Recently I also found a Java based tool called Burp to use REST API directly from its shell to manage Windows Azure subscription. There is no need for .net framework or Azure SDK. You just need a machine with Java runtime and Burp. I have added a blog on this regard here.
I think it depends on what you're more comfortable with. I don't think the CSManage tool is being updated that much any longer (maybe at all - unsure). The PowerShell cmdlets get a lot of attention - both from Microsoft and partners like Cerebrata.
My vote - learn PowerShell and go with the PowerShell cmdlets for working with your Windows Azure apps. Small learning curve and well worth it.

Deploy web applications and windows services using TFS 2010

Just went from TFS 2008 to 2010 at a client site and now wondering what happened to the TFSBuild.proj files from the TeamBuildTypes folder. I've already got the builds and drops working and now I need to get the old deployments working again. We used to do this with AfterBuild targets in the TFSBuild.proj. That mechanism seems to have moved or disappeared in 2010.
Can anyone point me to an article or describe how the deployment options have changed in 2010?
Specifically, I need to support running psexec to install and enable Windows Services on remote deployment targets and I need to deploy some web sites / web services to remote IIS nodes as part of the automated builds.
EDIT: Just found this: http://blogs.msdn.com/jimlamb/archive/2009/11/03/upgrading-tfs-2008-build-definitions-to-tfs-2010.aspx I'm more than a little taken back by the breaking changes between 2008 and 2010. I'm gonna need advice on how to deploy remote sites and services in the new default build process template mechanism.
Check out Vishal Joshi's PDC talk on Deploying Web Applications with VS 2010 and MSDeploy. On his blog, you'll also find tips on building MSDeploy packages with MSBuild. You can run psexec from your MSBuild script or, potentially, from a customized build process template. With TFS 2010, you can use MSBuild and Windows Workflow to solve your build automation problems.
Alternatively, you can use the "Upgrade" build process template and continue using your TFSBuild.proj file. This is the default behavior for upgraded build definitions for backwards compatibility. In that case, your build is still primarily driven by MSBuild with just a thin workflow to allocate an agent and run MSBuild.
Another option is to use TFS 2010 Build Agent on the server that you deploy to. This is how Visual Studio Lab Management deploys.
I have written a blog post about this: Continuous deployment with TFS 2010 Build Agent