2013-05-29 35 views
0

我是新来的PowerShell,我遇到了一个看似简单的问题,我找不到解决方案。我正在编写一个脚本,将序列号从当前计算机中提取出来,然后查询数据库并根据数据库对该特定序列号所做的操作在计算机上执行功能。现在,这里的问题,当我使用下面的代码格式化PowerShell表,删除条目

$currSerial = Get-WMIObject -Class "Win32_BIOS" | select SerialNumber 

我收到输出什么,我敢肯定是一个表,所以当我输出$ currSerial我得到这个:

SerialNumber                                     
------------                                     
AGR0Agh99481028 

所有我希望将文本“AGR0Agh99481028”保存为字符串,以便我可以用该号码查询服务器。现在我的查询看起来像这样:

$Query = "SELECT name FROM table WHERE serial = '$currSerial'" 

输出解析到这一点:

SELECT name FROM table WHERE serial = '@{SerialNumber=D1N0AS249667028  }' 

我读到一开始项目cmd,然后好像我已经知道该序列就是为了寻找它。是否有一些我可以用来使这更简单的cmdlet?谢谢您的帮助。

回答

4

所有你需要的是一个标志:

$currSerial = Get-WMIObject -Class "Win32_BIOS" | select -ExpandProperty SerialNumber

-ExpandProperty将会把它在一个纯老字符串。

3

select的输出是对象只有指定的属性。要获得序列号改变

Get-WMIObject -Class "Win32_BIOS" | select SerialNumber 

(Get-WMIObject -Class "Win32_BIOS" | select SerialNumber).SerialNumber 
+0

有点OT,但似乎这是我用过的'第二次-ExpandProperty'不当。它究竟用于什么? –

+1

我不会考虑'select -Expand SerialNumber'不合适。这只是获得相同结果的不同方式。 –

+1

@ r.tanner.f使用“-ExpandProperty”是合适的。有不止一种方式来做事情。 – alroc

2

甚至更​​短的

$currSerial = (Get-WMIObject -Class "Win32_BIOS").SerialNumber