配列から適切に抽出する


1

CSVには1つの列があり、数値がでフォーマットされており111-0000、一度に1つずつ処理するために読み込んでいます。CSVから情報の列をインポートしようとしていますが、CSVから読み取った配列からそれを抽出する適切な方法を見つけるのに問題があります。

CSVは次のようになります。

プロジェクト
111-0000
112-0000

ファイルから取得したいのは、各プロジェクト番号を返す変数です。これまでのところ、返品できるのは次のとおりです。

@{Project=111-0000}

現在、私が持っているのはForEach、CSVファイルから行を読み取る最初のステートメントだけです。

$CSV=Import-Csv "C:\ProjectList.csv"
ForEach ($Entry in $CSV)

この時点で、挿入

Write-Host $Entry

次の情報を返します。

@ {Project = 110-0000}
@ {Project = 111-0000}
@ {Project = 112-0000}
@ {Project = 113-0000}

この時点で必要なのは、その中から数値を抽出し、後でスクリプトで使用することです。そこで、そのプロジェクトに対して他のプロセスを実行します。ForEachがエントリにヒットするたびに処理する最終的な文字列は次のようになります。

C:\ 111-0000

このパスを処理し、最初からやり直して、リスト内の次のプロジェクトを取得し、リストの下で処理します。しかし、次のように最終的に出てくるのを防ぐための適切なコードを取得することはできません。

C:\ @ {Project = 111-0000}

最初のForEach内で別のForEachを使用して、コードから数値を抽出して渡すことを試みましたが、ここで行き詰まっています。

$lvCSV = New-Object System.Windows.Forms.ListView
ForEach ($Col in ($lvCSV.Columns )| ?{$_.Text -ne "Project"}){
$ProjectNumber = $Col.Text

$Entryもっと処理する必要があることはわかっていますが、適切な処理を見つけることができません。正しい方向に私を導くのを手伝ってもらえますか?

コードスニペット:

$CSV=Import-Csv "C:\ProjectList.csv"

ForEach ($Entry in $CSV){

$lvCSV = New-Object System.Windows.Forms.ListView #Defined at script start
ForEach ($Col in ($lvCSV.Columns )| ?{$_.Text -ne "Project"}){
$ProjectNumber = $Col.Text

なぜ[microsoft-excel]タグを適用したのですか?このプロセスのどこかでExcelを使用していますか?
Excellll

1
何をしようとしているかを明確にしてください。タグは、PowerShellを使用してCSVファイルからExcelファイルを作成しようとしていることを意味します。これは、CSVファイルをExcelにインポートする間違った方法のようです。
デーン

1
おそらくもっとコードを見る必要があるでしょう。たとえば、$ CSVは何を保持しますか?どのように取り込まれますか?CSV自体の例も役立ちます。質問を詳細に編集してください。
EBGreen

1
また、PowerShellを使用してCSVファイルをPowerShell配列に読み込む場合、何が問題になってい$project = Import-Csv "project.csv"ますか?
デーン

投稿を更新して、できればもっと理にかなって、私の意図を正しく描写してください。
メクロン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.