如何解决如何将PC序列号转换为字符串
| 首先,我想知道我是否可以使用这两个说明gwmi win32_bios | select serialnumber
gwmi win32_Computersystemproduct | select identifyingnumber
淡然。
第二个问题是为什么我要写
$sn = gwmi win32_bios | select serialnumber | out-string
$sn.gettype()
返回system.object
和
即使我的序列号由22个字符组成,3ѭ也会返回561。谢谢。
解决方法
通过使用Out-String,您将
gwmi win32_bios | select serialnumber
的输出转换为字符串并将其存储在$sn
中。因此,ѭ5现在将具有以下内容:
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
, 看起来这两个wmi属性在我的机器上给出了相同的结果。我猜他们是从同一个地方拉过来的。
根据GetType的结果,我得到以下信息:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
这意味着$ sn是一个String,它是从System.Object派生的。
哦,是的...最后一部分。 $ sn不仅是序列号。它是GetType()函数结果的标题,格式,空格和所有属性。
, 如果在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属性的内容。
, 或者,您可以执行以下操作:
$sn = (gwmi win32_bios).serialnumber
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。