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

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

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

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

解決済

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

JuguarSugar
JaguarSugar

総合スコア73

PowerShell

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

1回答

0リアクション

0クリップ

240閲覧

投稿2022/08/04 02:42

編集2022/08/04 04:16

前提

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

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

実現したいこと

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

現在のソースコード

ps1

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

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

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

Zuishin

2022/08/04 03:50

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

2022/08/04 05:57

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

2022/08/04 05:59

自己解決してください。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PowerShell

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