2016-12-29 91 views
2

這看起來非常簡單,但我似乎無法找到關於如何執行此操作的任何地方的語法。如何操作WMIObject字符串以寫入PowerShell中的文件

我現在的腳本是:

Get-WmiObject Win32_Bios -ComputerName $Env:COMPUTERNAME | 
    Select-Object SerialNumber | 
    Out-File "$env:SystemDrive\IT Logs\serial.csv" 

我想操縱它使剛剛的序列號,而不是文字,上面寫着「的SerialNumber」上面是輸出到單個行.csv文件。

我的目標是在每臺計算機上運行此腳本並將.csv文件發送到標籤打印機以獲取資產標籤。這甚至有可能嗎?

+1

使用'Select-Object -ExpandProperty'而不是'Select-Object'。另外,我建議在你的文件上加一個'.txt'擴展名,因爲在那種情況下它不會是一個csv文件。 –

回答

1

如果你想在\IT Logs\Serial.txt文件包含當前計算機的序列號,你可以寫這樣說:

Get-WmiObject Win32_BIOS | 
    Select-Object -ExpandProperty SerialNumber | 
    Out-File "$Env:SystemDrive\IT Logs\Serial.txt" 

在這種情況下,文本文件將只包含序列號。如果你想用ASCII而不是UNICODE格式,使用-Encoding ASCIIOut-File

如果你真的想輸出一個CSV文件,你可以這樣寫:

Get-WmiObject Win32_BIOS | 
    Select-Object SerialNumber | 
    Export-Csv "$Env:SystemDrive\IT Logs\Serial.csv" -NoTypeInformation 

在這種情況下,我們離開了-ExpandProperty輸出目標(不僅僅是屬性),並使用Export-Csv創建CSV文件(而不是Out-File)。

+0

完美的工作,謝謝! – Wmayer

0

第一部分問題的兩種方法只選擇屬性的值。

第一個是Bill_Stewart的評論建議:

Select-Object -ExpandProperty SerialNumber | 

或者:

(gwmi win32_bios -ComputerName $Env:COMPUTERNAME).SerialNumber 

爲您的打印的第二個問題,你可能能夠避免使用類似的.CSV中間步驟Out-Printer