ユーザー名のリストを持つCSVがあります。Import-csv Csvのターゲットセル
CSVファイルの1つのセルだけをインポートしたいとします。 A2
それは具体的なことは可能ですか?私はこれについてグーグルを試みたが、正確な解決策を見ていない。試したパワーシェルも助けます。
これはできますか?
おかげ
Confuseis
ユーザー名のリストを持つCSVがあります。Import-csv Csvのターゲットセル
CSVファイルの1つのセルだけをインポートしたいとします。 A2
それは具体的なことは可能ですか?私はこれについてグーグルを試みたが、正確な解決策を見ていない。試したパワーシェルも助けます。
これはできますか?
おかげ
Confuseis
以下の例は、この例でのtest.CSV
から選択して出力のみ 'セル' A2であろうが、行Aの列ヘッダである 'ユーザ名'
$inFile = Import-Csv c:\Temp\test.csv
$targetCell = $inFile.username[1]
Write-Output $targetCell
このコードは、次のことをやっている:
Import-CSV
は、入力ファイルからオブジェクトの配列を作成します。 CSVの最初の行にある列ラベルがプロパティ名になります。他の行は配列内のオブジェクトです。任意の配列と同様に、角かっこを使用して1つの要素を呼び出すことができます。最初は、列ヘッダーとして使用されたので、0のカウントを開始するが、このオブジェクトは、CSVファイルの3行目から来たので
$arrUsers = Import-CSV c:\temp\users.csv
$arrUsers[1]
第2のコマンドは、上記の、第2の目的を印刷します。
Get-Member
を使用すると、オブジェクトのメンバー(プロパティとメソッド)が表示されます。
$arrUsers | Get-Member
メンバーの一人がusername
であると仮定すると、配列のインデックスと組み合わせる、あなたが使用することができます。
$arrUsers[1].username
Import-CSV
は、非常に柔軟なツールです。特にForeach
とExport-CSV
との組み合わせ。 Get-Help
とGet-Member
の間でPowershellを簡単に探検できます。がんばろう。
それは完璧なおかげです。 – Confuseis
Import-Csvを使用すると、コンテンツがPSCustomObjectに変換されます。次の表に
例:
PS> $csv = Import-Csv .\test.csv
PS> $csv
ProcessName Id WS CPU
----------- -- -- ---
sihost 5996 30015488 44.640625
pia_nw 11064 10620928 52.921875
pia_nw 2344 7933952 104.0625
RuntimeBroker 6500 77500416 177.34375
SettingSyncHost 6736 5074944 202.796875
explorer 6600 284934144 272.140625
ipoint 920 3162112 372.78125
rubyw 10648 18026496 389.46875
pia_nw 3108 31330304 1640.5625
OneDrive 10208 33206272 6422.4375
だから、あなたが探している値を呼び出すためにNoteProperty名が必要になります。
PS> $csv.ProcessName[0]
sihost
もう1つの方法は、ヘッダー配列を作成し、データをスライスすることです。
オブジェクトで作業している場合:
PS> $header = ($csv | ConvertTo-Csv -NoTypeInfo)[0] -replace '"' -split ",";
>>
PS> $header
ProcessName
Id
WS
CPU
場合や、ファイルを扱う:
PS> $header = (gc .\test.csv)[0] -replace '"' -split ',';
ProcessName
Id
WS
CPU
ことそれからちょうど適切なインデックスを使用します。
PS> $csv[0]."$($header[0])"
sihost
は最後にありますxlsxファイルのExcel.Application ComObjectメソッド。これにより、セルと範囲を選択できます。 ComObjectsを使用して上の
PS> $file = "C:\Some\Path\IMade\Up\test.xlsx"
PS> $objExcel = New-Object -ComObject Excel.Application
PS> $objExcel.Visible = $false
PS> $wb = $objExcel.Workbooks.Open($file)
PS> $ws = $wb.Sheets.Item(1)
PS> $ws.Range("A2").Text
sihost
詳細情報はここで見つけることができます: Application Object (Excel)
ユーザー名プロパティではなく、配列にインデックスを置きます。 '$ inFile [1] .username' – Xalorous
実際、どちらの方法でも動作します。 $ infile.username [1]または$ infile [1] .usernameは同じ値を与えます。 –