协助编写 PowerShell 脚本以在 Active Directory 中搜索计算机名称

协助编写 PowerShell 脚本以在 Active Directory 中搜索计算机名称

我正在编写一个脚本来自动化一些 AWS 启动的 Windows 服务器实例。我已经完成了 DNS 更改和加入域部分,但我在迭代命名空间时遇到了麻烦……例如;

机器使用自动生成的名称启动:WIN-JDK2349DFJR 我希望脚本检查 AD 并查看名称(比如 imagesN)是否已被使用,如果已被使用,则将机器命名为 imagesN+1。

服务器启动,使用自动名称 (WIN-JDK2349DFJR)。脚本调用-脚本检查 AD:三台服务器分别名为“images1、images2、images3”。脚本将 DNS 更改为本地 DC,将名称更改为“images4”,加入域,然后重新启动。

我不确定如何编写 PowerShell 脚本来检查 Active Directory 中的计算机名称 imageN,并且如果 Active Directory 中存在名称为 imageN 的带有 N 的机器帐户,则增加 N。

答案1

特洛伊,

我认为从操作顺序的角度来看存在一些问题。

您的问题(“迭代命名空间时遇到问题”)的答案如下。听完我的回答后,您就会明白为什么我认为您会遇到其他问题。

回答如何编写 PowerShell 脚本来迭代命名空间。

import-module ActiveDirectory
$counter = 0
$nameselected = "no"
$server = "image$counter"
$ErrorActionPreference = 'SilentlyContinue'

Do { 
    Write-Host "Checking for existance of $server."
    if (Get-ADComputer -Identity $server) {
    Write-Host "Count is $counter."
    $global:counter++
    $server = "image$counter"
    Write-Host "New count is $counter."
    }
}
Until ( ( -not $( Get-ADComputer -Identity $server)) )
    $nameslected = "yes"
    Write-Host "The name will be $server."
    Write-Host "Replace this line with the with your function for changing DNS or joining the domain."

https://github.com/4D5A/Custom-PowerShell/blob/master/Scripts/Microsoft%20Active%20Directory/Get-AvailableComputerName.ps1

您在尝试执行此操作时可能会遇到的问题。

  1. 在将计算机加入域之前,您必须更改计算机的名称。
  2. 更改计算机名称后,必须重新启动计算机,然后才能将计算机加入域。
  3. 要运行 PowerShell 脚本,计算机需要安装 .NET Framework 3.5.1https://technet.microsoft.com/en-us/magazine/gg413289.aspx
  4. 您描述了在未加入域的计算机上运行此 PowerShell 脚本的过程。解决此问题的一个可能方法是使用远程 PowerShell 连接到已加入域且已安装 .NET Framework 3.5.1 和 RSAT 的计算机,然后从该 PowerShell 会话中获取可用的计算机名称,并在本地 PowerShell 会话中在本地计算机上使用它。

相关内容