3

まず、この2つの手順を使用できるかどうかを知りたいです

gwmi win32_bios | select serialnumber

gwmi win32_Computersystemproduct | select identifyingnumber

無関心に。

2番目の質問はなぜ私が書くなら

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

$sn.gettype()system.objectを返します

$sn.lengthシリアル番号が22文字であるにもかかわらず、561を返します。ありがとう。

4

4 に答える 4

2

私のマシンでは、これら 2 つの wmi プロパティが同じ結果をもたらすようです。私は彼らが同じ場所から引っ張っていると推測しています。

GetType の結果に関しては、次のようになります。

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

つまり、$sn は System.Object から派生した文字列です。

そうそう…最後の部分。$sn は単なるシリアル番号ではありません。GetType() 関数の結果のヘッダー、フォーマット、スペース、およびすべてのプロパティです。

于 2011-06-01T01:30:20.027 に答える
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.length9 を示しています。おそらく、出力の後にいくつかの隠し文字があります。コンソールの出力の後に空白行が表示されます。

本当のポイントになると、このスペースは によって追加され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
于 2011-06-01T03:49:23.393 に答える
1

または、これを行うことができます:

$sn = (gwmi win32_bios).serialnumber 
于 2011-06-02T11:25:01.413 に答える
1

の出力に対して get-member を実行するとgwmi win32_bios | select serialnumber、.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 オブジェクトの serialnumber プロパティの内容を選択しています。

于 2011-06-01T02:21:40.260 に答える