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. leetcode 二叉搜索树中第K小的元素 python

          二叉搜索树中第K小的元素     给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元 ...

  2. BZOJ.2660.[BJOI2012]最多的方案(DP)

    题目链接 首先我们知道: 也很好理解.如果相邻两项出现在斐波那契表示法中,那它们显然可以合并. 所以我们能得到\(n\)的斐波那契表示,记\(pos[i]\)为\(n\)的斐波那契表示法中,第\(i\ ...

  3. 【Codeforces666E】Forensic Examination 后缀自动机 + 线段树合并

    E. Forensic Examination time limit per test:6 seconds memory limit per test:768 megabytes input:stan ...

  4. 使用Newlife网络库管道模式解决数据粘包(二)

    上一篇我们讲了 如何创建一个基本的Newlife网络服务端 这边我们来讲一下如何解决粘包的问题 在上一篇总我们注册了Newlife的管道处理器 ,我们来看看他是如何实现粘包处理的 svr.Add< ...

  5. 模板 树上求LCA 倍增和树链剖分

    //233 模板 LCA void dfs(int x,int f){ for(int i=0;i<E[x].size();i++){ int v = E[x][i]; if(v==f)cont ...

  6. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem K. KMC Attacks 交互题 暴力

    Problem K. KMC Attacks 题目连接: http://codeforces.com/gym/100714 Description Warrant VI is a remote pla ...

  7. BZOJ 3564: [SHOI2014]信号增幅仪 最小圆覆盖

    3564: [SHOI2014]信号增幅仪 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3564 Description 无线网络基站在 ...

  8. Hadoop系列之(二):Hadoop集群部署

    1. Hadoop集群介绍 Hadoop集群部署,就是以Cluster mode方式进行部署. Hadoop的节点构成如下: HDFS daemon:  NameNode, SecondaryName ...

  9. hdu5094 Maze

    --就是爬管道-- 还好内存给的多-- 不然就不会做了-- #include<iostream> #include<map> #include<string> #i ...

  10. [Go] Template 使用简介

    Golang 提供了两个标准库用来处理模板 text/template 和 html/template.我们使用 html/template 格式化 html 字符. 模板引擎 模板引擎很多,Pyth ...