Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell在TS下的AD中查找下一个可用资产名称_Powershell_Task_Sequence_Sccm_Computer Name - Fatal编程技术网

Powershell在TS下的AD中查找下一个可用资产名称

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 =

所以我制作这个脚本是为了在一个系列中找到下一个可用的脚本。计算机将获得计算机XXXX的名称(XXXX为0-9999)。当我在TS完成后手动运行它时,它会工作,但当我作为一个步骤在TS中运行它时,它不会工作。有什么建议吗?它会将信息打印到.csv文件中,以便脚本运行。你有没有读过关于OSDComputername之类的东西,有没有这方面的信息

# 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期间,无人参与配置会拾取此变量。