基于WMI信息写入注册表的Powershell脚本

基于WMI信息写入注册表的Powershell脚本,powershell,registry,sccm,get-wmiobject,mdt,Powershell,Registry,Sccm,Get Wmiobject,Mdt,我希望在通过MDT/SCCM安装映像序列期间使用powershell脚本来WMI查询计算机。实际上,有多个VB脚本来完成系统属性区域的部分工作(制造商、型号、安装日期、序列号等),并且希望将其整合到一个脚本中,以完成所有工作 以管理员身份运行Powershell ISE,这样就不会导致任何权限问题;当我通过Bootcamp在Windows10上测试时,型号信息返回Macbook Clear-Host $Model = (Get-WmiObject -Class:Win32_ComputerSys

我希望在通过MDT/SCCM安装映像序列期间使用powershell脚本来WMI查询计算机。实际上,有多个VB脚本来完成系统属性区域的部分工作(制造商、型号、安装日期、序列号等),并且希望将其整合到一个脚本中,以完成所有工作

以管理员身份运行Powershell ISE,这样就不会导致任何权限问题;当我通过Bootcamp在Windows10上测试时,型号信息返回Macbook

Clear-Host
$Model = (Get-WmiObject -Class:Win32_ComputerSystem).Model
$RegKey = “HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\OEMInformation”
New-Item -Path $RegKey -Name Model -Type String -Value $Model –Force

After I ran the script, these were the results (shown below).

Name     Property
-----    --------
Model    (default) : MacBookPro11,1
但是,该值不会写入注册表。如何将信息写入注册表,同时还允许多个变量对齐?所有的值(子项)都需要创建并放置在“OEMInformation”的同一注册表路径中


目标包括制造商、型号、名称、安装日期和系统类型

如果我理解正确,您可以写入注册表,但不确定如何将多个项目写入同一“路径”

Windows注册表由“键”和一个或多个值组成。上面的“newitem”行实际上设置了一个值,但您没有指定一个值,因此看起来使用了“magic”默认值。 为了在同一路径中设置多个,可以使用Cmdlet 设置ItemProperty,例如使用:

Set-ItemProperty -Path $RegKey -Name "Model" -value $Model

然后,您可以使用相同的技术在该路径中拥有多个“属性”(只需为“Name”参数使用不同的值即可。

我能够解决此问题,谢谢@Trondh的帮助

$Model = (Get-WmiObject -Class:Win32_ComputerSystem).Model
$RegPath = 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\OEMInformation'

New-Item $RegPath -Force | New-ItemProperty -Name Model -Value $Model -Force | Out-Null

powershell返回说明它是编写的,但是,当查看注册表时,我没有看到字符串“Model”的条目或“MacBookPro11,1”的值。如果字符串键不存在,“Set-ItemProperty”是否也会创建字符串键(抱歉,我混淆了)。它会。Google“Set-ItemProperty”“registry”您应该可以找到大量的示例。我们能够确定它最初写入了错误的目标,这就是为什么我没有看到它。但是,如果“$model”的返回值是一个带空格的字符串,如何存储它以允许将条目写入注册表?
$model=(Get-WmiObject-Class:Win32_ComputerSystem)。Model
返回值为
HP Elitebook x360
它仍然只是一个字符串,不管它是否有空格。是否尝试运行上面的代码?