私はpowershellを初めて使用するので、明らかなことを見逃していないことを願っています。サイトを検索してみましたが、この正確な問題への参照を見つけるのは困難です。パイプ区切りの csv ファイルから特定の列 (オブジェクト) のみを出力しようとしています。私の実際のファイルには、40 以上の列と数千のエントリがあります。私の希望は、他のpowershellコマンドを使用して、特定の列のみでデータを並べ替えて一意にすることです。残念ながら、データの最も単純な削減を機能させることさえできません。
私のサンプルファイル:
Letter | Number | IpAddress | Machine | User | Garbage
a | 5 | 127.0.0.1 | tower | Admin | randomcharacters
f | 193 | 127.0.0.2 | laptop | administrator | charactersrandom%
r | 2882 | 127.0.0.8 | workstation | user1 | nothi$gher@e
両方
import-csv .\sample.txt -Delimeter "|" | get-member
import-csv .\sample.txt -Delimeter "|" | select-object | get-member
同じ結果を提供する
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Garbage NoteProperty System.String Garbage=randomcharacters
IpAddress NoteProperty System.String IpAddress =127.0.0.1
Letter NoteProperty System.String Letter =a
Machine NoteProperty System.String Machine =tower
Number NoteProperty System.String Number =5
User NoteProperty System.String User =Admin
しかし、オブジェクトを指定すると、System.String が消えて、空白行だけが出力されます。
import-csv .\sample.txt -Delimiter "|" | select-object User | get-member
TypeName: Selected.System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
User NoteProperty User=null
どこが間違っていますか?データをインポートして、数列だけを出力したいだけです。1 つ以上を指定すると失敗します。同様の投稿で読んだように {$_.User} オブジェクトを使用しようとしましたが、同じ問題が返されます。