SCCM2103系列,OSD任务序列部署操作系统,SCCMOEMOSDisk辅助工具

_OSDDetectedWinDir

在 Windows PE 启动时,任务序列会在计算机的硬盘驱动器上扫描是否以前已安装操作系统。 Windows 文件夹位置存储在此变量中。 你可以将任务序列配置为从环境中检索该值,并将其用于指定相同的 Windows 文件夹位置进行新的操作系统安装



SCCMOEMOSDisk工具主要用于辅助SCCM OSD 任务序列进行选择安装操作系统类型,有存在_OSDDetectedWinDir变量操作系统则返回对应信息列表,

注意 SCCM WinPE64位环境,_OSDDetectedWinDir变量是操作系统32位则用默认操作系统信息列表,应用操作系统步骤不支持在WinPE64环境中去安装32位系统,不过SCCM WinPE32位环境是支持应用操作系统步骤32位和64位系统安装。

选择操作系统分区,有存在_OSDDetectedWinDir变量操作系统则返回对应系统分区盘符

默认计算机名称_SMSTSMachineName变量包含 'MININT-' 关键词则执行命名规则,不符合则不修改。

鼠标点击 WinPE/Full OS ComputerName 更新计算机命名规则,双击则取默认_SMSTSMachineName 计算机名称

默认计时30秒,鼠标左键双击工具主界面或按空格按键 停止计时时间。

Boot Drive 选项

传统模式启动PE是Bios第一启动硬盘信息, 如果没有则不显示。

UEFI模式启动PE是根据UEFI启动硬盘属性在哪个盘就显示对应盘信息,如果没有UEFI硬盘启动属性则用OS Drive 选项规则

OS Drive 选项

按优先级从NVMe、SATA、Raid、其他等接口协议取固态硬盘最小容量对应信息,比如 没检测到NVMe固态硬盘则取SATA固态硬盘,要是都没符合条件则取硬盘中最小容量一个

_OSDDetectedWinDir变量没有值,操作系统信息默认选择Boot Drive、 OS Drive 选项,其他硬盘选项默认不勾选

组织单位OU

根据_SMSTSMachineName变量获取计算机名称,读取AD OU信息匹配输出默认该计算机名称所在OU名称,

注意WinPE 需要导入Powershell AD管理模块,AD服务器需要开启powershell 远程管理。

AD User

根据注册表域用户登录返回账户名。

AD用户用于计算机自动登录设置,或加入本地管理组变量

PassWrod

AD用户密码用于计算机自动登录设置

sccmoemosdisk日志记录参考

外部参数引入

默认值 下拉表框参数追加

-combobox9text “Windows10x64” -combobox9itemsadd “Win11,Win12”

-combobox10text “2 - Enterprise” -combobox10itemsadd “专业版,企业版”

-combobox11text “2004” -combobox11itemsadd “2021,2022”

示例

示例 默认显示OS信息以及自定义添加变量值

SCCMOEMOSDisk_x64.exe -combobox9text “Win11” -combobox10text “专业版” -combobox11text “2021” -combobox9itemsadd “Win11,Win12” -combobox10itemsadd “专业版,企业版” -combobox11itemsadd “2021,2022”

注意事项

_OSDDetectedWinDir

在 Windows PE 启动时,任务序列会在计算机的硬盘驱动器上扫描是否以前已安装操作系统。 Windows 文件夹位置存储在此变量中。

-combobox9text、-combobox10text、-combobox11text 在已有操作系统环境下会返回相关信息,如无信息则使用默认值

计算机名称 根据主板信息判断输出前缀信息

#宏碁主板 -BranAcer = "Acer" #宏碁主板 前缀命名 -PrefixAcer = "AR-"

#苹果主板 -BranApple = "Apple" #苹果主板 前缀命名 -PrefixApple = "AL-"

#清华同方主板 -BranTHTF = "THTF" #清华同方主板 前缀命名 -PrefixTHTF = "TF-"

#七彩虹主板 -Brancolorful = "colorful" #七彩虹主板 前缀命名 -Prefixcolorful = "CL-"

#华硕主板-BranASUS = "ASUS" #华硕主板 前缀命名 -PrefixASUS = "AS-"

#戴尔主板 -BranDELL = "DELL" #戴尔主板 前缀命名 -PrefixDELL = "DL-"

#华为主板 -BranHUAWEI = "HUAWEI" #华为主板 前缀命名 -PrefixHUAWEI = "HW-"

#联想主板 -BrandLenovo = "Lenovo" #联想主板 前缀命名 -PrefixLenovo = "LV-"

#Viglen主板 -BrandViglen = "Viglen" #Viglen 前缀命名 -PrefixViglen = "VL-"

#HP主板 -BrandHP = "HP" #HP主板 前缀命名 -PrefixHP = "HP-"

#HP主板 -BrandHewlettPackard = "Hewlett-Packard" #HP主板 前缀命名 -PrefixHewlettPackard = "HP-"

#超微主板 -BrandSupermicro = "Supermicro" #超微主板 前缀命名 -PrefixSupermicro = "SM-"

#技嘉主板 -BrandGigabyte = "Gigabyte" #技嘉主板 前缀命名 -PrefixGigabyte = "GB-"

#ESXI虚拟机 -Brandvmware = "vmware" #ESXI虚拟机 前缀命名 -Prefixesxi = "VM-"

#Hyper-V虚拟机 -BrandHyperv= "Microsoft Corporation", #Hyper-V虚拟机 前缀命 -PrefixHyperv = "HY-"

#未识别到主板制造商信息默认输出 前缀命名 -Prefixdefault = "LB-"

#获取主板序列号规则要符合包含字母和数组并且小于12位数 (默认值12位数)

#查看主板品牌、序列号PowerShell命令:gwmi win32_baseboard gwmi win32_bios gwmi win32_computersystem

#先从 Win32_baseboard 取序列号、不符合则在Win32_BIOS 取序列号,两者都不符合则取当前年 、月、 日、 秒、毫秒

示例 :修改默认前缀、hyper-v虚拟机前缀

SCCMOEMOSDisk_x64.exe -Prefixdefault “ts-” -PrefixHyperv “cs-”

用于判断主板序列号小于等于 12位、大于等于13位(默认参数)

-Digital = "12",

用于截取主板序列号后12位

-lengthDigital = 12

这两个参数只对符合序列号规则有效,若规则返回是时间命名则无效。

示例:想增加计算机默认前缀5位数输入,设定小于等于10位序列号取值,大于等于11位则截取后10位

SCCMOEMOSDisk_x64.exe -Prefixdefault “Demo-” -Digital “10” -lengthDigital “10”

===============================================================================================

默认自动计时变量 $OEMTimeout=30

多个外部参数示例: 默认信息 win11 专业版 2021 ,添加下拉选择信息,取序列号后10位

SCCMOEMOSDisk_x64.exe -combobox9text “Win11” -combobox10text “专业版” -combobox11text “2021” -combobox9itemsadd “Win11,Win12” -combobox10itemsadd “专业版,企业版” -combobox11itemsadd “2021,2022” -Digital “10” -lengthDigital “10” -Prefixdefault “ts-” -PrefixHyperv “cs-”

#输出此程序运行完成标志 $TSEnv.Value("luobots_OEMOSDDisk") = true

#选择系统盘符变量 $TSEnv.Value(“OSDdisk”) 示例变量值: C:

#选择操作系统变量 $TSEnv.Value(“luobots_OSDOS”) 示例变量值: Windows10x64

#选择操作系统镜像版本类型 $TSEnv.Value('luobots_OSDImageIndex') 示例变量值: 2 - Enterprise

#选择操作系统版本 $TSEnv.Value(“luobots_OSDOSversion”) 示例变量值: 2004

#选择操作系统组合变量 $TSEnv.Value(“luobots_oswim”) 示例变量值: Windows10x64 2 - Enterprise 2004

#扫描操作系统输出标志 $TSEnv.Value("OSDWINDOWS") = System disk not scanned、Scan to system disk

#引导硬盘启动属性标志 $TSEnv.Value("luobots_BootFromDisk") = true

#引导硬盘启动编号 $TSEnv.Value("luobots_BootFromDiskDiskNumber")示例变量值: 0

#指定分区物理磁盘编号,优先任务序列设定值 $TSEnv.Value("OSDDiskIndex") 示例变量值: 0

#格式化硬盘变量转存 $TSEnv.Value("OSDDiskIndexdisk")示例变量值: 0

#独立启动硬盘容量变量 $TSEnv.Value("diskformat_BootFromDiskdisk"):示例变量值 :120GB

#独立启动硬盘编号变量 $TSEnv.Value("luobots_BootFromDiskDiskNumber")示例变量值 :0

#独立OS硬盘标志变量 $TSEnv.Value("SystemDisk")示例变量值 :true

#独立OS硬盘编号变量 $TSEnv.Value("luobots_SystemDiskNumber")示例变量值 :0

#启动盘、OS硬盘同一个标志变量 $TSEnv.Value("luobots_Bootosdisk") = true

#启动盘、OS硬盘编号同一个变量 $TSEnv.Value("luobots_BootSystemDiskNumber"):示例变量值 :0

#独立OS硬盘容量,启动硬盘、OS硬盘容量变量 $TSEnv.Value("diskformat")示例变量值: 120GB

#AD用户变量用于自动登录或添加本地管理员组调用 $TSEnv.Value("luobots_ADUser")

#AD用户密码变量用于自动登录调用 $TSEnv.Value("luobots_ADUserPassWrod")

#AD组织单位变量 $TSEnv.Value("OSDDomainOUName")

#硬盘编号输出变量 $TSEnv.Value("luobots_DiskNumber0")...("luobots_DiskNumber8")示例变量值: 0

#硬盘容量变量 $TSEnv.Value("diskformat0")...("diskformat8")示例变量值: 120GB

操作系统返回版本信息对应参考条件
switch ($OEMEditionID) {
{ $_ -eq 'Ultimate' } { $combobox10.Text = '4 - Ultimate' }
{ $_ -eq 'Education' } { $combobox10.Text = '1 - Education' }
{ $_ -eq 'ServerStandard' } { $combobox10.Text = '2 - Server Standard' }
{ $_ -eq 'EnterpriseS' } { $combobox10.Text = '1 - EnterpriseS' }
{ $_ -eq 'Enterprise' } { $combobox10.Text = '2 - Enterprise' }
{ $_ -eq 'Professional' } { $combobox10.Text = '3 - Pro' }
{ $_ -eq 'ServerEnterprise' } { $combobox10.Text = '3 - Server Enterprise' }
{ $_ -eq 'ProfessionalEducation' } { $combobox10.Text = '4 - Pro Education' }
{ $_ -eq 'ServerDatacenter' } { $combobox10.Text = '4 - Server Datacenter' }
{ $_ -eq 'ProfessionalWorkstation' } { $combobox10.Text = '5 - Pro For Workstations' }
{ $_ -eq 'ServerWEB' } { $combobox10.Text = '7 - Server WEB' }
default{ $combobox10.Text = $combobox10text }
#default{ $combobox10.Text = $combobox10text; $combobox11.text = "$combobox11text" }
}
diskformat_BootFromDiskdisk、diskformat...diskformat8 硬盘容量大小变量参考
if ($PhysicalDiskdir -ge 35GB -and $PhysicalDiskdir -le 45GB)
{
# Write-Host "小于等于45GB"
$diskformat = '45GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 55GB -and $PhysicalDiskdir -le 80GB)
{
#Write-Host "小于等于80GB"
$diskformat = '80GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 100GB -and $PhysicalDiskdir -le 128GB)
{
#Write-Host "小于等于128GB"
$diskformat = '128GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 145GB -and $PhysicalDiskdir -le 160GB)
{
#Write-Host "小于等于160GB"
$diskformat = '160GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 200GB -and $PhysicalDiskdir -le 256GB)
{
# Write-Host "小于等于256GB"
$diskformat = '256GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 290GB -and $PhysicalDiskdir -le 320GB)
{
# Write-Host "小于等于320GB"
$diskformat = '320GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 460GB -and $PhysicalDiskdir -le 500GB)
{
#Write-Host "小于等于500GB"
$diskformat = '500GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 900GB -and $PhysicalDiskdir -le 1000GB)
{
#Write-Host "小于等于1000GB"
$diskformat = '1000GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 1600GB -and $PhysicalDiskdir -le 2000GB)
{
#Write-Host "小于等于2000GB"
$diskformat = '2000GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 2400GB -and $PhysicalDiskdir -le 3000GB)
{
#Write-Host "小于等于3000GB"
$diskformat = '3000GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
elseif ($PhysicalDiskdir -ge 3400GB -and $PhysicalDiskdir -le 4000GB)
{
#Write-Host "小于等于4000GB"
$diskformat = '4000GB'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
else
{
# write-host '未匹配到磁盘大小'
$diskformat = 'false'
(New-Object -COMObject Microsoft.SMS.TSEnvironment).Value('diskformat') = $diskformat
}
举报
评论 0