2017-10-28 165 views
-1

我期待使用PowerShell腳本到WMI期間通過MDT/SCCM成像序列的安裝後查詢的計算機。積極有多個VB腳本來實現系統屬性區(製造商,型號,InstallDate,的SerialNumber等)的部分,並希望整合到一個腳本,做這一切這一點。PowerShell腳本寫註冊表基於WMI信息

運行PowerShell的ISE作爲管理員,這樣就不會造成任何權限問題;當我在Windows 10上通過Bootcamp測試時,模型信息返回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」的相同註冊表路徑中。

目標,以包括製造商,型號,名稱,InstallDate,作爲SystemType中好。

回答

1

如果我的理解正確,您可以寫入註冊表,但您不確定如何將多個項目寫入相同的「路徑」。

Windows註冊表是由「鍵」和一個或多個值contstructed。上面的「新項目」行實際上設置了一個值,但是您沒有指定一個值,因此它看起來像使用了「魔術」默認值。 爲了在相同的路徑設置多個的,你會使用,使用該cmdlet 的Set-ItemProperty,例如:

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

然後,您可以選擇使用相同的技術在多路徑「屬性」(看時只是用不同的值,爲「名稱」的參數。

+0

PowerShell的回報說,這是寫的,但是在註冊處,我看不到任何條目ng「型號」或「MacBookPro11,1」的值將伴隨它。如果一個不存在的話,「Set-ItemProperty」是否也會創建字符串鍵(對不起,如果我很困惑)? –

+0

它會。谷歌「Set-itemproperty」「註冊表」,你應該找到大量的例子。 – Trondh

+0

能夠確定它最初寫入錯誤的目的地,這就是爲什麼我沒有看到它。但是,如果「$ model」的返回值是一個包含空格的字符串,那麼如何存儲該條目以允許將條目寫入註冊表? '$ Model =(Get-WmiObject-Class:Win32_ComputerSystem).Model的返回值是'HP Elitebook x360' –

-1

我能得到這個解決了,謝謝你@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