2011-06-01 9 views
2

首先要知道我是否可以使用這兩個指令如何PC序列號轉換爲字符串的所有我想要的

gwmi win32_bios | select serialnumber 

gwmi win32_Computersystemproduct | select identifyingnumber 

漠然。

第二個問題是,爲什麼,如果我寫

$sn = gwmi win32_bios | select serialnumber | out-string 

$sn.gettype()返回我System.Object的

$sn.length返回我561,即使我的序列號是由22個字符。謝謝。

回答

2

通過使用Out-String,您可以將gwmi win32_bios | select serialnumber的輸出轉換爲字符串並將其存儲在$sn中。所以,現在$sn將具有以下內容:

PS> $sn 

serialnumber 
------------ 
xxxxxxx 

所以,$sn.length正顯示出你這整個字符串的長度。如果您只想將其更改爲序列號:

PS> $sn = gwmi win32_bios | select -Expand serialnumber | out-string 
PS> $sn 
xxxxxxx  
PS> $sn.Length 
9 

正如您所見,我的序列號(我刪除了原始文件)只有7個字符寬。但是,$sn.length顯示9.輸出後可能有一對隱藏的字符。在控制檯輸出後,我可以看到一個空行。

即將到來的這個空間是由Out-String添加。所以,你甚至不需要這個。你可以這樣做:

PS> $sn = gwmi win32_bios | select -Expand serialnumber 
PS> $sn 
XXXXXX 
PS> $sn.Length 
7 

$sn仍然是一個字符串。

PS> $sn.GetType() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  String         System.Object 
+0

嗨:)。非常感謝你提供了另一個很好的答案。對不起,延遲,但我花了一個短暫的假期:) – 2011-06-03 21:34:39

+0

很高興我可以再次幫助! :)我也只是從假期回來。 – ravikanth 2011-06-12 14:07:39

2

看起來像這兩個wmi屬性在我的機器上給出了相同的結果。我猜他們是從同一個地方拉出來的。

在的GetType的結果來看,我得到這樣的:

IsPublic IsSerial Name          BaseType                              
-------- -------- ----          --------                              
True  True  String         System.Object 

這意味着$ SN是一個字符串,它是從System.Object派生。

哦,是啊......最後一部分。 $ sn不只是序列號。它是標題,格式,空格以及GetType()函數結果的所有屬性。

+0

+1。我總是在這個網站得到很大的幫助。再見。 – 2011-06-03 21:36:34

1

如果您在gwmi win32_bios | select serialnumber的輸出上執行get-member操作,則會看到它實際上具有以下屬性,就像.NET中的任何對象一樣。

typeName: Selected.System.Management.ManagementObject 

Name   MemberType Definition         
----   ---------- ----------         
Equals  Method  bool Equals(System.Object obj)    
GetHashCode Method  int GetHashCode()       
GetType  Method  type GetType()        
ToString  Method  string ToString()       
serialnumber NoteProperty System.String serialnumber=N1B85 T10 55757 

如果你想要的序列號,你需要做到以下幾點:

$sn = gwmi win32_bios | select serialnumber 
$sn.serialnumber 

這樣,你會選擇SERIALNUMBER對象器的序列號屬性的內容。

+0

+1。非常感謝您的好意。 – 2011-06-03 21:35:13

1

或者你可以這樣做:

$sn = (gwmi win32_bios).serialnumber 
+0

謝謝。我已經提出了你的答案。 – 2011-06-03 21:35:52

相關問題