[PowerShell Utils] Remotely install Hyper-V and Failover Cluster feature on a list of windows 2012 servers
Hello everyone, this is the second post of the series. .
Background
===============
In my environment, I have 15 Windows hosts. I need to configure them from the OS installation to configure fail over cluster and then create and run VMs on them. Without scripting, manually complete related tasks would be very bored and easy to make mistakes. I started using PowerShell and it really helped ease the pain.
Now, let's take a look at the second script that you will love to use.
What can this one do
===============
I have 15 hosts recently joined domain, and I want all of them to join a fail over cluster. The first thing I am facing is to install hyper-v and fail over cluster feature on all these 15 hosts.
Installing Hyper-V feature requires to restart the host.
This script will help you install these two features on all the hosts remotely, avoiding constantly check if the server is back online. Everything in one click!
Logic Intro
===============
First, the script will turn off the windows firewall on target host.
Second, you will see whether hyper-v feature is already installed. If did, continue. If not, hyper-v feature will be installed.
Hyper-V feature installation requires server restart. The script will restart the host and keep trying to contact the target server until it gets back online.
Third, check if fail over cluster feature needs to be installed.
Finally, list these two features status on this server.
All above steps will be repeated for another server.
Script is here
===============
PowerShell
# #Functions defined here # function autoinstall-hypervfailoverfeatures ($ComputerName) { #Turnoff windows firewall, or Test-Connection will fail Get-NetFirewallProfile -CimSession $ComputerName | Set-NetFirewallProfile -Enabled False Get-WindowsFeature -Name Failover-Clustering -ComputerName $ComputerName Get-WindowsFeature -Name hyper-v -ComputerName $ComputerName #Verify features and install them $hypervFeature = Get-WindowsFeature -Name Hyper-V -ComputerName $ComputerName if($hypervFeature.Installed) { Write-Host "Hyper-V installed already on $ComputerName." } else { Write-Host "Installing Hyper-V feature on $ComputerName." Install-WindowsFeature –Name Hyper-V -ComputerName $ComputerName -IncludeManagementTools -Restart } #Wait for restart command to take effect, or fail over cluster feature will start installing, failing the whole thing. Start-Sleep -s 10 $count = 1 While (!(Test-Connection -Cn $ComputerName -BufferSize 16 -Count 1 -Quiet)) { $count++ $totalseconds = $count * 5 Write-Host "$ComputerName did not response to ping command." Write-Host "Waited $totalseconds seconds. Wait for another 5 seconds, will try again." Start-Sleep -s 5 } Write-host "Server is now alive. Proceed......" $failoverclusterFeature = Get-WindowsFeature -Name Failover-Clustering -ComputerName $ComputerName if($failoverclusterFeature.Installed) { Write-Host "Failover cluster installed already on $ComputerName." } else { Write-Host "Installing Failover cluster feature on $ComputerName" Install-WindowsFeature –Name Failover-Clustering -ComputerName $ComputerName -IncludeManagementTools -Restart } Write-Host "Features status shown below:" Get-WindowsFeature -Name Failover-Clustering -ComputerName $ComputerName Get-WindowsFeature -Name hyper-v -ComputerName $ComputerName } function AutoInstall-HypverVFailoverFeatures-Exec { param ([string[]]$computernames) foreach ($computer in $computernames) { autoinstall-hypervfailoverfeatures($computer) } } # #List all the server you want to install Hyper-V and Failover cluster # AutoInstall-HypverVFailoverFeatures-Exec host9,host10
At last
===============
Wensheng and I worked together on this script.
Thank you, Wensheng.
24th Nov Update
===============
Wensheng wrote a shorter version, here it is.
Note this is a workflow of PowerShell, and it is parallel, meaning all the hosts operates at the same time! And he used Restart-Computer cmdlet as an alternative to keep pinging target computer. A lot better.
Usage:
PowerShell
workflow AutoInstall-HypverVFailoverFeatures-Exec { param ([string[]]$computernames) foreach ($computer in $computernames) { #Turnoff windows firewall "Turning off windows firewall on $computer." Get-NetFirewallProfile -CimSession $computer | Set-NetFirewallProfile -Enabled False #show cluster and hyper-v feature status "Showing features status on $computer." Get-WindowsFeature -Name Failover-Clustering,hyper-v -ComputerName $computer } foreach -parallel ($computer in $computernames) { #Verify features and install them $hypervFeature = Get-WindowsFeature -Name Hyper-V -ComputerName $computer if($hypervFeature.Installed) { "Hyper-V installed already on $computer." } else { "Installing Hyper-V feature on $computer." Install-WindowsFeature –Name Hyper-V -ComputerName $computer -IncludeManagementTools Restart-Computer -Wait -PSComputerName $computer -Force } $failoverclusterFeature = Get-WindowsFeature -Name Failover-Clustering -ComputerName $computer if($failoverclusterFeature.Installed) { "Failover cluster installed already on $computer." } else { "Installing Failover cluster feature on $computer" Install-WindowsFeature –Name Failover-Clustering -ComputerName $computer -IncludeManagementTools } } foreach ($computer in $computernames) { "$computer Current features status shown below:" Get-WindowsFeature -Name Failover-Clustering,hyper-v -ComputerName $computer } }
Happy Powershelling, everybody.
[PowerShell Utils] Remotely install Hyper-V and Failover Cluster feature on a list of windows 2012 servers的更多相关文章
- What is a Microsoft Failover Cluster Virtual Adapter
What is a Microsoft Failover Cluster Virtual Adapter anyway? A question often asked is, "What i ...
- Hyper V NAT 网络设置 固定IP / DHCP
Hyper V 默认的Default Switch同时支持了NAT网络以及DHCP,虚拟机能够访问外网. 但使用过程中发现这个IP网段经常变化,而且Hyper V没有提供管理其NAT网络与DHCP的图 ...
- windows server 2008 r2 企业版 hyper v做虚拟化的相关问题处理
windows server 2008 r2 企业版 hyper v做虚拟化的相关问题处理 今天在dell r710 上用windows server 2008 r2企业版hyper v 做虚拟化,添 ...
- 设置Hyper V
1.打开服务器管理器 2.添加角色和功能 3.安装类型 -> 基于角色或基于功能的安装 4.服务器选择 -> 下一步 5.服务器角色 勾选"Hyper V"
- bundle install 出现 'gem install mysql2 -v '0.3.15' succeeds before bunding '
bundle install 出现 'gem install mysql2 -v '0.3.15' succeeds before bunding ' 解决:sudo apt-get install ...
- HYPER -V 独立安装的 2016版本 中文版 下载好慢啊
HYPER -V 独立安装的 2016版本 中文版 下载好慢啊
- Powershell script to install Windows Updates (msu) from folder
######################################################### # # Name: InstallWindowsUpdates.ps1 # Auth ...
- [PowerShell Utils] Create a list of virtual machines based on configuration read from a CSV file in Hyper-V
Hello everyone, this is the third post of the series. . Background =============== In my solution, ...
- windows rails new demo时候出错Make sure that `gem install mysql2 -v '0.3.15'` succeeds before bundling.
rails new demo --database=mysql最后报错Gem files will remain installed in D:/BillFiles/rails_dev/Ruby193 ...
随机推荐
- Eclipse设置之:代码注释/server 控制台输出乱码解决
1 Eclipse设置 Configure clean up style The location is here: And the configuration should fo ...
- Xamarin-Android_BaseAdapter 简单的复用
Xamarin-Android_BaseAdapter 简单的复用 缘由: 本人是一枚 小菜 初学Xamarin-Android 正在学习ListView 控件 发现这个控件的自定义布局 用的那叫一 ...
- 使用 Python 在 Linux 上实现一键回归测试
从代码库迁出代码 —- pexpect 的使用 测试人员从代码库(例如 CVS )迁出代码的过程中,需要手动输入访问密码,而 Python 提供了 Pexpect 模块则能够将手动输入密码这一过程自动 ...
- Ⅳ.Catalan数
Catalan数首先是由Euler在精确计算对凸n边形的不同的对角三角形剖分的个数问题时得到的,它经常出现在组合计数问题中. 问题的提出:在一个凸n边形中,通过不相交于n边形内部的对角线,把n ...
- 笔记本光驱位置装SSD固态硬盘(亲自试验)
我的笔记本买的早了,2010年的联想Z460,速度有点慢,本来想换台电脑,想想还是算了,没有太大必要.固态硬盘便宜了,于是在原来的光驱位置装了一个256G的SSD固态硬盘,现在的性能能达到刚买来时的1 ...
- [Java]Get与Post,客户端跳转与服务器端跳转
http://www.thinksaas.cn/group/topic/133101/ 虽然说get 与post 问题很老套了,但是作为web 开发人员来说对于这个的理解确实很有必要,其实说到get ...
- Markdown,你只需要掌握这几个
目录 题记 正文 1. 常用标记 这是一级标题 这是二级标题 这是三级标题 这是高阶标题(效果和一级标题一样 ) 这是次阶标题(效果和二级标题一样) 2. 次常用标记 3. 不常用标记 4. 专项使用 ...
- spring cloud 学习(1) - 基本的SOA示例
有过dubbo/dubbox使用经验的朋友,看到下面这张图,一定很熟悉,就是SOA架构的最基本套路. 与dubbo对比,上图的3大要素中,spring cloud是借助以下组件来实现的: 1.注册中心 ...
- ftp通用类1
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- STM32F4 Timer Internal Trigger Connection
The Timers can be cascaded to make more complex timing relationships, or longer periods. Internally ...