2011-06-01 42 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

相关问题