Powershell在TS下的AD中查找下一个可用资产名称
所以我制作这个脚本是为了在一个系列中找到下一个可用的脚本。计算机将获得计算机XXXX的名称(XXXX为0-9999)。当我在TS完成后手动运行它时,它会工作,但当我作为一个步骤在TS中运行它时,它不会工作。有什么建议吗?它会将信息打印到.csv文件中,以便脚本运行。你有没有读过关于OSDComputername之类的东西,有没有这方面的信息Powershell在TS下的AD中查找下一个可用资产名称,powershell,task,sequence,sccm,computer-name,Powershell,Task,Sequence,Sccm,Computer Name,所以我制作这个脚本是为了在一个系列中找到下一个可用的脚本。计算机将获得计算机XXXX的名称(XXXX为0-9999)。当我在TS完成后手动运行它时,它会工作,但当我作为一个步骤在TS中运行它时,它不会工作。有什么建议吗?它会将信息打印到.csv文件中,以便脚本运行。你有没有读过关于OSDComputername之类的东西,有没有这方面的信息 # Variables debugging $global:navneserie = $null $global:navneserieNavn =
# Variables debugging
$global:navneserie = $null
$global:navneserieNavn = $null
$computerName = $env:COMPUTERNAME
$Dato = (get-date)
$log = "Enabled"
write-host $computername
import-module ActiveDirectory
write-host $serialnumber
$global:navneserie = "Computer"
$global:navneserieNavn = "Computer"
function SCCMLog
{
if ($log -eq "Enabled")
{
add-content \\DOMAINNAME\NETLOGON\SCCMLog\SCCMlog.csv "$Dato;$Computername; ;OK"
}
}
if ($env:computerName -like "Computer*")
{
write-host $computername
exit
}
else
{
$OpptatteNavn = Get-ADComputer -properties name -filter *| where {$_.name -match $global:navneserie} | ForEach-Object {$_.Name} | sort
[int]$forrige = 9999
[int]$denne = 0000
$funn = $false
While (-not $funn)
{
Foreach ($navn in $OpptatteNavn)
{
$navn = $navn.substring($navn.length -4,4)
$denne = $navn
If ((($denne-$forrige) -gt 1)-and -not $funn)
{
[int]$nesteLedige = $forrige + 1
$funn = $true
break
}
$forrige = $navn
}
}
If ($nesteLedige -lt 10)
{
$000Name = $global:navneserieNavn+"000"+$nesteLedige
rename-computer -newname "$000Name"
write-host "Datamaskinen har blitt renamet til:"$global:navneserieNavn"000"$nesteLedige"`n"
LogSCCM
}
elseIf ($nesteLedige -lt 100)
{
$00Name = $global:navneserieNavn+"00"+$nesteLedige
rename-computer -newname "$00Name"
write-host "Datamaskinen har blitt renamet til:"$global:navneserieNavn"00"$nesteLedige"`n"
LogSCCM
}
elseIf ($nesteLedige -lt 1000)
{
$0Name = $global:navneserieNavn+"0"+$nesteLedige
rename-computer -newname "$0Name"
write-host "Datamaskinen har blitt renamet til:"$global:navneserieNavn"0"$nesteLedige
LogSCCM
}
else
{
rename-computer = $global:navneserieNavN$nesteLedige
write-host "Datamaskinen har blitt renamet til:$global:navneserieNavn$nesteLedige"
LogSCCM
}
在运行任务序列时,您可以使用OSDComputername变量设置计算机名,如下所示:$TSEnv=New Object-COMObject Microsoft.SMS.TSEnvironment$TSEnv.Value(“OSDComputername”)=“yourname here”将“rename computer-newname”$000Name”替换为“$TSEnv=New Object-COMObject Microsoft.SMS.TSEnvironment$TSEnv.Value(“OSDComputername”)='yourname here'”现在TS卡在了“运行powershell脚本”的步骤中“似乎也没有将任何内容打印到日志文件中。它们位于两行上。。。以防注释字段中缺少格式会产生误导。Line1->$TSEnv=新对象-COMObject Microsoft.SMS.TSEnvironment Line2->$TSEnv.Value(“OSDComputerName”)='yournamehere'谢谢,powershell仍然没有主控程序。至少没有什么用处。周一将对此进行测试并向您提供反馈。我刚刚想到,如果您使用的是Rename Computer cmdlet,那么您将在完整操作系统中运行此脚本,而不是在WinPE阶段。要使OSDComputerName变量的此更改生效,必须在完整操作系统就位之前执行此更改,因为在“安装窗口和ConfigMgr”步骤中执行的初始Sysprep期间,无人参与配置会拾取此变量。