Azure Storage Services – Article Series on

I recently started to post on regarding Azure Storage Services.







Here are the blogs in this series that I’m planning to publish:

Azure Storage Services — Introduction
Azure Storage Services — Accessing Services
Azure Storage Services — Storage Account
Azure Storage Services — Blob Storage
Azure Storage Services — Table Storage
Azure Storage Services — Queue Storage
Azure Storage Services — File Storage
Azure Storage Services — Premium Storage Benefits
Azure Storage Services — Security
Azure Storage Services — Useful Tools.

Azure Public Reserved IP kullanilmasi

Bilindigi gibi Azure uzerindeki sanal makineleriniz icin statik yada dinamik IP adresi yapilandirmasi gerceklestirebiliyorsunuz. Ayni sekilde dis dunyaya hizmet veren servisleriniz uzerindeki IP adreslerini de rezerve edebilme sansiniz bulunuyor. Bu sayede ilgili servisiniz durdurulsa bile uzerine atanmis olan IP adresini tutmaya devam edecektir.

Azure icerisinde suanda toplamda subscription bazina 20 adet IP rezerve edebilirsiniz. Eger daha fazla ihtiyaciniz var ise Microsoft’a bu konuda bir case acmaniz gerekiyor.

Bir servis icin public IP rezerve edebilmeniz icin oncelikle bu IP’yi subscription icerisine eklemeniz gerekiyor.

New-AzureReservedIP ReservedIPName MyReservedIP Location "Central US"

Ardindan hangi IP adresinin rezerve edildigini Get-AzureReservedIP komutu ile gorebilirsiniz.

Ardindan ilgili IPyi cloud service ile iliskilendirmeniz gerekiyor. Bunun icin de asagidaki komutu kullanabilirsiniz.

New-AzureReservedIP ReservedIPName MyReservedIP Location "Central US"
$image = Get-AzureVMImage|?{$_.ImageName -like "*RightImage-Windows-2012R2-x64*"}
New-AzureVMConfig -Name TestVM -InstanceSize Small -ImageName $image.ImageName `
| Add-AzureProvisioningConfig -Windows -AdminUsername adminuser -Password MyP@ssw0rd!! `
| New-AzureVM -ServiceName TestService -ReservedIPName MyReservedIP -Location "Central US"


Visual Studio 2015 – PowerShell – Github / Perfect Combo

github-logo-300x200First thing first. I started my “Development” career with PowerShell like thousands of peopleout there. Yes I have some unpleasant experiences with Delphi and PHP couple of years ago but PowerShell was the perfect match for me as a infrastructure consultant. It allows to build small and quick automation solutions to help me for my daily tasks.

Over the last couple of years PowerShell evolved and changed a lot. With PowerShell version 5.0 we have now .NET class support! In every release you will feel yourself like a real developer 🙂

I was looking for the new features coming with version 5.0 and as always checking PowerShell MVP Trevor Sullivan`s blog. I came across with following Channel 9 video he published.

He is talking about PowerShell tools which is an extension for Visual Studio and allows you to develop PowerShell projects within Visual Studio. I strongly recommend above video if you are interested.

As a PowerShell fan, I always wanted to play with Visual Studio as I know that VS is much more powerful than PowerShell built-in ISE. VS provides integration with VS Online, Github (source control), Intellisense and Test Explorer.

Let me tell you how I develop my PowerShell scripts..

I don`t care about best practices or development cycles. I start to develop script from scratch. I try to follow a basic structure but most of the time I find myself lost in the hundreds of lines of codes. I also feel the pain of lack of change tracking, source control in ISE. In a typical week, I may add or change bunch of codes in my script and I`m trying to track my changes by creating manul version folders. Yes I know…It doesn`t work.

So wanted to give a chance Visual Studio and Github integration with PowerShell. Here is a quick requirements of this integration.

  • I installed PowerShell Tools extension for Visual Studio 2015.
  • I installed Github Extension for Visual Studio 2015.
  • Created a new account on Github and created a repository called PowerShell.
  • Logged in my Github account within Visual Studio.


Then followed steps mentioned on

At the end now I can easily create my scripts in Visual Studio using PowerShell Tools extension and then sync them to my Github repository.

For every change in my script, I comment and then commit/sync script to my repository so that easily can track versions.

Looking great!

PowerShell Function to create colorful menus

I was preparing a PowerShell demo for System Center Universe and decided to use nested menus in order to easily browse between different demo sections. This is how it looks like in action.

Couple of simple loops checks for the inputs and redirects you to the next level/menu.

Creating loops and logic was simple but drawing menus and lines was not easy as I expected. This is what I came up after couple of hours:

Write-Host “╔════════════════════════════════════════════════════════════════╗”-ForegroundColor Magenta
Write-Host “║” -f Magenta -nonewline;Write-Host “UCP Director – API Call – PowerShell Demo Script 1.0” -f Green -nonewline;Write-host “`0`0`0`0`0`0`0`0`0`0`0`0║” -ForegroundColor Magenta
Write-Host “╠════════════════════════════════════════════════════════════════╣”-ForegroundColor Magenta
Write-Host “║” -f Magenta -NoNewline;Write-Host “Please select the admin task you require:`0`0`0`0`0`0`0`0`0`0” -Fore Cyan -NoNewline;Write-host “`0`0`0`0`0`0`0`0`0`0`0`0`0║” -ForegroundColor Magenta
Write-Host “║`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0║” -f Magenta
Write-Host “║” -f Magenta -NoNewline;Write-Host “`t1. Provisioning” -f Yellow -NoNewline;write-host “`t`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0║” -Fore Magenta
Write-Host “║” -f Magenta -NoNewline;Write-Host “`t2. Monitoring” -f Yellow -NoNewline;write-host “`t`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0║” -Fore Magenta
Write-Host “╚════════════════════════════════════════════════════════════════╝`n”-ForegroundColor Magenta

Pretty ugly right? This is why I decided to create a consistent function so that everytime when I want to create a PowerShell menu I can use it.

Hopefully my Basel to London fligth delayed for 2 hours yesterday (!) and I had enough time to code it in airport.

Here is the function on Technet gallery:

Usage is quite simple and in couple of seconds you can have menus like below:



SCOM SDK – PowerShell – Creating monitor


icon_sdkOne of my customers wanted to monitor a 3rd party solution by monitoring events and asked if it`s possible with SCOM. As you probably know it`s one of the easiest tasks in SCOM to create monitors to monitor events on event viewer for specific or bunch of servers.

I was told to send them instructions to create a monitor based on Windows events. I started to get screenshots from create management pack and create monitor wizards, and then creating a group for the servers need to be monitored and finally overriding my monitor to enable monitoring for this specific computer group. At the end I realized it was about 30 page screenshots. Instead of sending these screenshots I though it would be much easier and sexy to send them a single PowerShell script to create a monitor. I thought SCOM Shell would have these cmdlets.

I was wrong.

Unfortunately, SCOM Shell doesn`t have any supported shell to create a unit monitor for Windows events. Then I decided to check SCOM SDK.

That was the first time for me to deal with SDK with PowerShell. SDK is much more powerful than PowerShell but you need to figure out how to deal with objects and methods.

There is an example to create a unit monitor by using SCOM SDK but as you may realize it`s written in C#. That was a good starting point for me.

So I started my journey, spent couple of hours to create my PowerShell script that uses SCOM SDK binaries. You can find the script below.

Please note that this is really an ugly script, no error handling, structure or sexy functions. This is just a sample to deal with SDK. If you are interested in to learn how to deal with SDK using PowerShell, it`s a good chance to open my script and C# example and see the integration between them.

Also SCOM MVP Tao Yang has done great job with Automating OpsMgr series on his blog .

He also shared with me an article yet to be written regarding monitor creation using SDK. It`s much more better than my ugly script 🙂 So if you need more details, follow Tao`s automation series.

My ugly script:!57641&authkey=!AKbaImed7116Ig8&ithint=file%2cps1


Azure uzerinde IP adresi rezervasyonu

Azure uzerinde hizmet verebilmek icin kaynaklarinizin bir IP adresine ihtiyaci bulunur. VNet uzerinde tanimlayacaginiz bu IP adresleri dinamik yada statik olarak yapilandirilabilir.

Varsayilanda bir VNet icerisindeki sanal makine otomatik olarak havuzdan bi IP alir. Dagitilacak bu IP havuzunu daha onceden sizin belirlemeniz gerekiyor. Ancak bazi senaryolarda belirli sunucular icin statik IP yapilandirmasini gerceklestirmeniz gerekmektedir. Ornegin Azure uzerindeki sanal makinenizi bir Domain Controller sunucusu olarak yapilandirmayi dusunuyorsaniz bu sunucunun en azindan bir adet statik IP’ye ihtiyaci vardir.

Asagidaki PowerShell komutu sayesinde bir VM olusturma asamasi sirasinda rahatlikla statik bir IP belirleyebilirsiniz.


New-AzureService -ServiceName ServiceAnil -Location "Central US"
$MyImage = Get-AzureVMImage|?{$_.ImageName -like "*Windows-2012R2-x64*"}
New-AzureVMConfig -Name AnilVM -InstanceSize Large -ImageName $MyImage.ImageName `
| Add-AzureProvisioningConfig -Windows -AdminUsername anilerduran -Password Password1 `
| Set-AzureSubnet –SubnetNames Subnet-1 `
| Set-AzureStaticVNetIP -IPAddress `
| New-AzureVM -ServiceName "ServiceAnil" –VNetName VNetAnil

The Power of Automation


IT automation has always been one of the most important goal of IT managers to make their organization run efficiently. Automation simply ensures that all resources will be allocated according to business needs dynamically.

Hu wrote a post on HDS community where he talked about typical break down of IT budgets.



I also found another diagram on Gartner`s IT metrics report that shows us organizations are spending %66 of their time and budget to just “run the business”

Gartner IT Metric Report

These two diagrams simply show us that in order to grow and transform our business we should focus on innovation and reduce time/money spending on operating. That’s obviously not an easy task to achieve and can only be possible if your infrastructure is flexible and adaptable for these changes.

Couple of years ago, it was a straightforward task for IT administrators to manage/operate less data, servers, and applications. But now, every single minute hundreds of terabytes of data are flowing from “things” to our systems. Since IoT concept will be an enabler to different domains including logistic, transportation, automotive, healthcare and smart cities, in the near future every single “thing” will be sensor attached and connected to the internet/cloud. Analysts expect that 50 to 100 billion devices will be connected to the Internet by 2020.

IT administrators should handle not only this huge amount of data but also underlying components such as storage, network, servers, applications, hypervisors so on.

Unfortunately without having a true software-defined infrastructure approach, managing, maintaining or innovating could be impossible.

As my colleagues Paul Meehan and Paula Phipps mention, to design a software-defined infrastructure approach, we can use three A`s

Automation: 29% of IT time is spent on tedious tasks. 39% of IT outages are due to human error. Hitachi midrange VSP family eliminates tedious manual tasks, reduces errors and lets administrators focus on revenue-generating activities.

Access: Access more data and solve real-world problems

Abstraction: Provide more services faster with more flexibility to support a diverse set of applications.

Couple of years ago I was involved in a project. Customer was working for government and had very sensitive public IIS web sites. Development team was developing updates every two weeks and sending MSI update package to Operations team. This team was responsible to achieve following actions:

  • RDP to different DMZ servers. All servers were belong to different forests therefore they need to use different credential for each server.
  • Copy MSI package to servers, unzip it (No check if MSI damaged/working or not)
  • Call network team and ask them to disable pool member on Load Balancer
  • For each web site, stop IIS service, change webconfig file, install MSI (no check if its installed or not, no check on event viewer or log files)
  • Start IIS service
  • Call network team to revert back configuration
  • Connect another IIS web site….

Operation team was spending around one or two days to update all web servers in production.

But I think time was not the main problem. The main problem was human errors. According the researches, most of the storage, server or service outages are caused by human errors. For the above scenario, if operation guy changes wrong line in webconfig or network guy removes wrong pool member, production environment will have service outage.

However, as using a correct automation method, organizations can easily reduce these statistics and save more money/time.   Remember the first “A” – Automation.

Microsoft is investing in automating, enabling the use of different automation solutions such as PowerShell, System Center Orchestrator and Service Management Automation. These automation solutions can be used to automate not only Microsoft workloads but also cross-platform Linux workloads, Network and Storage solutions.

I believe PowerShell is one of the most important initiatives by Microsoft in recent years. It`s a scripting language with an easy syntax and developed for System administrators. Almost all of the new Microsoft products, on-premise or Azure based, have native Windows PowerShell support.

Orchestrator is the new version of Opalis, acquired by Microsoft in 2009. It`s a process automation solution and comes with System Center suite. If you are using Virtual Machine Manager or Operations Manager you already have an IT Process Automation solution as well. Simple dashboard, drag&drop workflow design. You can also use .NET Script activity to run PowerShell scripts in workflows.

And Service Management Automation built-on PowerShell workflows. It`s a web based process automation tool designed to work with Windows Azure Pack, local version of Microsoft Azure in your datacenter. It allows you to build SMA workflows to create, monitor, deploy and manage resources in your private cloud environment.

When it comes to Software-Defined Infrastructure and Automation, Hitachi offers a wide range of solutions.  The Hitachi midrange VSP family provides the foundation for software-defined infrastructures by making automation and abstraction easy with an integrated portfolio of infrastructure automation and virtualization software.

If you are using Hitachi`s converged solution, you already know that how it simplifies management of private cloud and data center environments. You can also combine Microsoft System Center / Windows Azure Pack suite with UCP and it enables an end-to-end Private Cloud platform with self-service / orchestration / automation capabilities.

This solution automates the management of servers, networking components and storage using UCP Director, System Center and Microsoft adaptors.

Hitachi integrates with Microsoft applications to create a unified automation/management solution for Microsoft environments.

These are the available adaptors provided by Hitachi:

  • Hitachi Infrastructure Adapter for Microsoft System Center Operations Manager
  • Hitachi Adapter for Microsoft System Center Virtual Machine Manager
  • Hitachi Storage Adapter for Microsoft System Center Orchestrator
  • Hitachi Storage Adapter for Microsoft® SQL Server Remote BLOB Storage
  • Hitachi Storage Adapter for Microsoft Windows PowerShell
  • Hitachi Storage Adapter for Microsoft Volume ShadowCopy Service

Especially adapters for PowerShell and Orchestrator enables you to automate and orchestrate processes using together Hitachi and Microsoft solutions.

Hitachi Storage Adapter for Microsoft Windows PowerShell allows Hitachi storage administrators to use PowerShell cmdlets on Hitachi storage systems. Using cmdlets, administrators can create scripts to automate complex tasks.

Hitachi Storage Adapter for Microsoft Windows PowerShell

Using Hitachi Storage Adapter for Microsoft System Center Orchestrator you can easily extend the capabilities of System Center Orchestrator.

Hitachi Storage Adapter for Microsoft System Center Orchestrator

This plug-in provides:

  • Storage management and Hitachi NAS (HNSA) support
  • Virtualized storage management
  • Hitachi Content Platform (HCP) management

Each activity uses built-in PowerShell processes to run on remote server and allows you to create workflows/Runbooks to automate complex tasks in your datacenter.

It`s really good to see how two different vendor come together and built a complete management and automation solution. One more time hats-off to Hitachi engineers. They created really valuable plugins and integrations with Microsoft/System Center suite. These adaptors combines the power of Hitachi performance, reliability and agility with the productivity of Microsoft solutions.