powershell - 将“下一个可用的 AD 计算机”添加到 power-shell 脚本
问题描述
目前,我正在尝试向我的 powershell 脚本添加一个函数,其目标如下:
在尚未添加到域的计算机上,让它根据用户的输入在本地 AD 服务器(非天蓝色)中搜索下一个可用名称。
我过去尝试过使用数组但失败了,我想在其中使用 Get-ADComputer cmdlet,但我不确定如何实现它。
$usrinput = Read-Host 'The current PC name is $pcname , would you like to rename it? (Y/N)'
if($usrinput -like "*Y*") {
Write-Output ""
$global:pcname = Read-Host "Please enter the desired PC Name"
Write-Output ""
$userinput = Read-Host "You've entered $pcname, is this correct? (Y/N)"
if($usrinput -like "*N*") {
GenName
#name of the parent function
}
Write-Output ""
上面的代码是一个更大的脚本的一部分,它解析一个计算机名并最终将其分配给正确的 OU。
我们的命名方案是这样的:BTS-ONE-LAP-000
所以它是:部门 - 位置 - 设备类型 - 设备计数
然后代码将获取第一部分“BTS-ONE”并解析它以找到它应该去的正确 OU,然后使用 Add-Computer cmdlet 分配它。它还将机器重命名为用户输入的任何内容($pcname)。
因此,在解析名称之前,我希望它搜索 AD 中的所有当前名称。
因此,用户可以输入:“BTS-ONE-LAP”,它会自动找到下一个可用的设备计数,并将其添加到名称中。因此,它会自动生成“BTS-ONE-LAP-041”。
补充说明:
我用过Get-ADComputer -Filter 'Name -like "BTS-ONE-LAP-*"' | FT Name
,输出是
Name
----
BTS-ONE-LAP-001
BTS-ONE-LAP-002
BTS-ONE-LAP-006
BTS-ONE-LAP-007
BTS-ONE-LAP-009
BTS-ONE-LAP-010
BTS-ONE-LAP-022
BTS-ONE-LAP-024
BTS-ONE-LAP-025
BTS-ONE-LAP-028
BTS-ONE-LAP-029
BTS-ONE-LAP-030
BTS-ONE-LAP-031
BTS-ONE-LAP-032
BTS-ONE-LAP-034
BTS-ONE-LAP-035
BTS-ONE-LAP-036
BTS-ONE-LAP-037
BTS-ONE-LAP-038
BTS-ONE-LAP-039
BTS-ONE-LAP-040
BTS-ONE-LAP-041
BTS-ONE-LAP-050
BTS-ONE-LAP-051
我不知道如何解析它,所以代码知道 BTS-ONE-LAP-003 可用(我对数组很糟糕)。
解决方案
$list = (Get-ADComputer -Filter 'Name -like "BTS-ONE-LAP-*"' | Sort-Object Name[-1])
$i = 1
$found = $false
Foreach($Name in $list.Name)
{
while($i -eq [int]$Name.Split("-")[3].Split("-")[0])
{
$i++
}
}
$i
上面的代码将遍历列表中的每个名称,并在发现集合中的第 3 台计算机不是 #3 计算机时停止。
例子:
BTS-ONE-LAP-001 | $i = 1
BTS-ONE-LAP-002 | $i = 2
BTS-ONE-LAP-006 | $i = 3
它将 BTS-ONE-LAP-006 拆分为 006,并将其转换为整数,使其为 6。由于 6 不等于 3,因此我们知道 BTS-ONE-LAP-003 可用。
推荐阅读
- javascript - 如何在没有时间的情况下将新日期推送到数组?
- ionic-framework - 使用 ionic 4 的双圆形进度条
- javascript - 我无法让图像响应带有图像重新加载的登录分屏引导设计
- yocto - 添加元 oe 配方失败
- php - 从表 1 中选择所有记录,然后从表 2 中选择与表 1 主键匹配的所有记录
- performance - 并行版本比 golang 中的串行版本慢得多
- java - 方法返回三个或更多连续键出现的次数
- flutter - 颤振 dio 上传文件 [pdf/ docs]
- reactjs - react js中的useState初始化错误
- bash - BASH脚本中包含元组的两个变量的乘法