I would like to start a series of blog posts sharing PowerShell scripts to speed up our solution operations.

Today, I am going to share a script file that can select a network adapter, changes its DNS address, then join the server to the domain you specify.

 

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 first script that I loved using.

 

What can this one do

===============

For Cisco C240 servers in Durham lab, we have to use KVM Console to configure initial IP address. Then we will be able to remote to the windows hosts to operate. We want to run PowerShell remotely on all 15 hosts. But without joined to AD, remotely run powershell commands are  not possible. This script will help you automatically join a host to domain. No more remote desktop, click here, click there, set this, set that, and then restart server for 15 times!

 

Logic Intro

===============

First, output the current server's FQDN.

Then, compare the server's domain with your domain name. If they are not the same, the script will select a network adapter which IP address starts with the address you specify.

Then, change this adapter's DNS to point to your domain controller.

Then, join this server to the domain, and automatically restart the host.

 

Script is here

===============

PowerShell

#

#Set your variables here.

#

$yourDomainName = "midrange.sio"

$yourNetworkInitial = "10.110.70."

$yourDomainControllerIP = "10.110.70.96"

$yourDomainUserName = "Administrator"

$yourDomainUserPassword = "Password01!"

#

#Functions defined here.

#

function OutputAllNetAdaptersInfo ()

{

    foreach($adapter in (get-netadapter | ? {$_.status -eq "up"}))

    {

        $fields= [PSCustomObject]@{

            Ip= ($adapter | Get-NetIPConfiguration).IPv4Address.IPAddress;

            Name= $adapter.Name;

            Description=  $adapter.InterfaceDescription;

        }

        $fields | format-table

    }

}

function FindTargetedNetAdapter($IPInitial)

{

    foreach($adapter in (get-netadapter | ? {$_.status -eq "up"}))

    {

        $fields= [PSCustomObject]@{

            Ip= ($adapter | Get-NetIPConfiguration).IPv4Address.IPAddress;

            Name= $adapter.Name;

            Description=  $adapter.InterfaceDescription;

        }

        if($fields.Ip.StartsWith($IPInitial))

        {

            return $adapter

        }      

    }

    return null;

}

#

#Operation starts here

#

$FQDN = (Get-WmiObject win32_computersystem).DNSHostName+"."+(Get-WmiObject win32_computersystem).Domain

Write-Host "Server name is $FQDN."

if(!(Get-WmiObject win32_computersystem).Domain.ToString().compareTo($yourDomainName))

{

    Write-Host "Server $FQDN is already joined domain $yourDomainName"

}

else

{

    OutputAllNetAdaptersInfo;

    $Tgtadapter = FindTargetedNetAdapter($yourNetworkInitial);

    if($Tgtadapter)

    {

        $Tgtadapter | Set-DnsClientServerAddress -ServerAddresses $yourDomainControllerIP

        $domain = $yourDomainName

        $password = $yourDomainUserPassword | ConvertTo-SecureString -asPlainText -Force

        $username = "$domain\$yourDomainUserName"

        $credential = New-Object System.Management.Automation.PSCredential($username,$password)

        Add-Computer -DomainName $domain -Credential $credential

        Restart-Computer

    }

    Write-Host "No appropriate network adapter found to be used to join domain."

}

At last

=============

Works like a charm every time.

Try it, you will love it.

[PowerShell Utils] Automatically Change DNS and then Join Domain的更多相关文章

  1. Windows 10 & change DNS

    Windows 10 & change DNS https://www.windowscentral.com/how-change-your-pcs-dns-settings-windows- ...

  2. Create a conditional DNS forwarder on our domain.com to Amazon default DNS provider

    Backgroup: I have an AWS Managed Active Directory(domain.com). I created a DHCP options set  to my d ...

  3. powershell加win的dns服务器,解决网站负载均衡问题

    用我发明的powershell填坑法,加windows的dns服务器.从调整dns服务器解析ip时间段的角度,解决网站负载均衡问题. ------------------------win2012r2 ...

  4. [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, ...

  5. [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 environm ...

  6. Powershell About Active Directory Group Membership of a domain user

    使用Get-User命令去寻找group membership of a domain user $((Get-ADUser Wendy -Properties *).MemberOf -split ...

  7. Cross join in excel --- Copy from Internet

    Set up the Workbook In this example, there are two tables -- Raw Materials and Packaging -- and each ...

  8. deploy a ec2 and join into domain with terraform

    Below is the example to convert the ps script into userdata for terraform to create instance and aut ...

  9. Android之通过adb shell 模拟器 error: more than one device and emulator 改ip dns

    error: more than one device and emulator 如果出现上面那种情况 请关闭  ide 输入下面的  再次重新启动 模拟器 如果实际上只有一个设备或模拟器,并且查到有 ...

随机推荐

  1. Android-Service和Thread

    Android-Service和Thread 学习自 郭霖的博客 服务是运行在主线程上的 可能在我们第一次接触到Service的时候都是对于 __服务是运行在主线程上的 __这一现象不太理解,但是事实 ...

  2. 【转】让你彻底搞懂websocket

    一.websocket与http WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算) 首先HTTP有 1 ...

  3. hdu 4169 二分匹配最大独立集 ***

    题意:有水平N张牌,竖直M张牌,同一方向的牌不会相交.水平的和垂直的可能会相交,求最少踢出去几张牌使剩下的牌都不相交. 二分匹配 最小点覆盖=最大匹配. 链接:点我 坐标点作为匹配的端点 #inclu ...

  4. bzoj 2648: SJY摆棋子&&2716: [Violet 3]天使玩偶 --kdtree

    2648: SJY摆棋子&&2716: [Violet 3]天使玩偶 Time Limit: 20 Sec  Memory Limit: 128 MB Description 这天,S ...

  5. 使用Xcode打包上传APP

    1.打开xcode,进入product->Scheme->EditScheme,找到Archive,最上面的设备选择IOSDevice,在BuildConfiguration中选中Rele ...

  6. 12174 - Shuffle

    这道题能够用"滑动窗体"的思想来做,假想一个滑动的窗体,这个窗体的大小是s.划过一个大小为n的区域,可是由于s可能比n大,所以我们最好还是不去考虑s和n的大小,直接开出一个足够大的 ...

  7. leetcode——169 Majority Element(数组中出现次数过半的元素)

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  8. android在代码中四种设置控件背景颜色的方法(包含RGB)

    转载请注明出处: http://blog.csdn.net/fth826595345/article/details/9208771  TextView tText=(TextView) findVi ...

  9. Revit API画垂直于风管的风管

    start /// <summary> /// 选择风管与风管外一点,画与风管垂直的风管. /// </summary> [Transaction(TransactionMod ...

  10. 使用Axure RP原型设计实践03,制作一个登录界面的原型

    本篇体验做一个登录界面的原型. 登录页 首先在Page Style里为页面设置背景色. 如果想在页面中加图片,就把Image部件拖入页面,并设置x和y轴.双击页面中的Image部件可以导入图片.在Im ...