質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

1848閲覧

PowershellのSelect-Objectに条件を組み込みたい。

JuguarSugar

総合スコア83

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2022/08/04 02:42

編集2022/08/04 15:29

前提

お世話になります。
PowerShellにて、CSVファイルを「Import-Csv」にて"PsCustomObject"に変換した後、
その"PsCustomObject"を「Select-Object」し、その中で条件分岐したいと考えています。

今はSelect-Objectの中ではなく、その下に書いたFor文で条件分岐していますが、
PsCustomObjectの中身が1行だけだとFor文が回らない現象に見舞われているため、Select-Objectに条件を組み込みたいです。

実現したいこと

・PowerShellのSelect-Object上で条件分岐を行いたいです。
・列の値に「0」が入っていたら「1」を、「1」が入っていたら「0」を、というように相互変換したいです。

現在のソースコード

ps1

1 $CsvObj = Import-Csv -Encoding Default C:\a.csv #ここでCSVをインポートし、PSCustomObjectに変換しています。 2 $CsvObj = $CsvObj | #ここでSelect-Objectしています。 3 Select-Object 4 @{label= '名前'; expression = {$_.'名前'}}, 5 @{label='区分1'; expression={$_.'区分1'}}, #この「区分1」列に"0"か"1"が入っています。 6 7#ここで条件分岐させています。具体的には全行回しで0↔1相互変換を行っています。 8 for($i = 0; $i -lt $CsvObj.Count; $i++){ 9 if($CsvObj[$i].区分1 -eq '0'){ 10 $CsvObj[$i].区分1 = '1' 11 }elseif($CsvObj[$i].区分1 -eq '1'){ 12 $CsvObj[$i].区分1 = '0' 13 } 14 }

お知恵を貸していただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/08/04 03:50

いきなり $HinmokuObj が出てきましたが、これは $CsvObj ですよね? expression の後の波カッコで囲まれた部分には好きなコードを書けますから、ここで '区分1' に入れるものを出力してください。
JuguarSugar

2022/08/04 05:57

ご指摘頂いた箇所を修正しました。 ご回答頂いた通りにしたら解決しました。 誠に有難う御座いました。
Zuishin

2022/08/04 05:59

自己解決してください。
guest

回答1

0

自己解決

下記のようにfor文に記載していた内容をselect文に記載しなおすよう修正し解決しました。

$CsvObj = Import-Csv -Encoding Default C:\a.csv #ここでCSVをインポートし、PSCustomObjectに変換しています。
$CsvObj = $CsvObj | #ここでSelect-Objectしています。
Select-Object
@{label= '名前'; expression = {$.'名前'}},
@{label='区分1'; expression={if($
.区分1 -eq '0'){
$.区分1 = '1'
}elseif($
.区分1 -eq '1'){
$_.区分1 = '0'
}
}}

投稿2022/08/04 06:29

JuguarSugar

総合スコア83

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問