• ベストアンサー

PowerShellでCSVを文字列に組立る方法

以下の内容のCSVファイルから「CN=test,OU=test_ou,DC=test,DC=domain」の結果を最小限のPowerShellで得るにはどのようにすればよろしいでしょうか? Name,OU,Domain test,test_ou,test.domain いろいろ試してみたのですが、きれいにこの形にできませんでした。 よろしくお願いいたします。

  • inshin
  • お礼率78% (104/133)

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6639/9406)
回答No.2

いやすみません、私よりもよっぽど上級ではないですか! ちゃんと動いてるようですが、どの辺が気に入らないのでしょう…。 ただDomain分割部で謎の空白が出るので、私の考えを入れると Import-Csv .\test.csv | %{"CN=" + $_.Name + ",OU=" + $_.OU + ",DC=" + ($_.Domain -replace "\.",",DC=")} こうすれば、まあ空白は消えますが、",DC=" を2つ書いたりして美しくないです。

inshin
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • asciiz
  • ベストアンサー率70% (6639/9406)
回答No.1

どのようなスクリプトを書きましたか? とりあえず考えただけですが (1)カンマで区切られた第一項目をCN=に、第二項目をOU=に、第三項目をDC=に置換 (2)ドットをすべて",DC="に置換 この2段階でできそうに思います。 ただし、第三項目以外にドットは無いのが条件です。 あるようならもう少し考えますが。

inshin
質問者

お礼

ご回答いただきまして、ありがとうございます。 試した内容は以下の通りです。 Import-Csv .\test.csv | %{"CN=" + $_.Name + ",OU=" + $_.OU + ($_.Domain.Split(".") | %{",DC=$_"})} よろしくお願いいたします。

関連するQ&A

  • WindowsバッチのCSV読み込みについて

    WindowsバッチにてCSVファイルのデーターの読み込みを行いたいと考えています。 CSVの中身(test.csv)------------------------------------- "CN=test1,CN=users,DC=testdomain,DC=local","test1","aaa" "CN=test2,CN=users,DC=testdomain,DC=local","test2","bbb" 上記の取り込み方として、以下のバッチを実行しようとした場合、求めている結果になりません。 for /f "delims=, usebackq tokens=1-3 usebackq" %%i in ("test.csv") do echo %%i, %%k ○求める結果 "CN=test1,CN=users,DC=testdomain,DC=local","aaa" "CN=test2,CN=users,DC=testdomain,DC=local","bbb" ○得られた結果 "CN=test1,CN=users,DC=testdomain "CN=test2,CN=users,DC=testdomain ""(ダブルコーテーション)で括ったものを、ひとつのカラムとして受け渡したすことはできないでしょうか。よろしくお願い致します。

  • Powershellで複数のcsvファイルを一つに

    powershellの初心者です。 PowerShellで複数のcsvファイルを一つにする必要にせまり ネット情報を探して以下がヒットしましたが 初心者なのこの情報をどう利用して良いのかが判りません。 以下の具体例でコード(Join.ps1)を教えてください。 以下の3つのファイルを C:\Users\TAC_\Desktop\Test\Drive1.csv C:\Users\TAC_\Desktop\Test\Drive2.csv C:\Users\TAC_\Desktop\Test\Drive3.csv 以下のファイル名に保存(まとめる) C:\Users\TAC_\Desktop\Test\Join.csv C:\Users\TAC_\Desktop\Test\Join.ps1を起動させると 該当する3つのCSVファイルを結合したJoin.csvを作成する

  • ActiveDirectoryのユーザー一括登録

    Win2008r2でADを構築し、ユーザー情報の抜出(export)、一括登録(import)を csvdeコマンドで練習しております。 C:>csvde -u -f export.csv -r objectCategory=user コマンドにより、なんとかCSV形式で、ADに登録されている情報を抜き出すことはできました。 ecportしたファイルを基にしてimport用データーを作成したのですが、上手く行かない状態です。 登録するユーザー ⇒user03とuser04 import.csvの中身↓↓ N,objectClass,cn,name,userAccountControl,sAMAccountName,sn,displayName,userPrincipalName "CN=user03,OU=Test-OU,DC=test,DC=local",user,user03,user03,512,user03,user03,user03,user03@test.local "CN=user04,OU=Test-OU,DC=test,DC=local",user,user04,user04,512,user04,user04,user04,user04@test.local import.csvを実行すると。 C:>csvde -i -f import.csv "(null)" に接続しています SSPI を使って現在のユーザーとしてログインしています ファイル "import.csv" からディレクトリをインポートしています 入力ファイルを開くときにエラーがありました 0 個のエントリを正しく修正しました。 プログラムでエラーが発生しました ログはファイルに書き込まれませんでした。ログ ファイルを生成するには、 -j オプションを使ってログ ファイルへのパスを指定してください。 という状態になってしまいます。 以下のサイトを参照して行っています。 http://itpro.nikkeibp.co.jp/article/COLUMN/20080125/292017/ どなたかご教授下さい。

  • PowerShellの文字操作について

    恐れ入ります、Powershellを、独学でWebで、調べな柄試しているのですが、よくわからなく、初心者で申し訳ないのですが、ご指導いただけますと幸いです。 やりたいことは、CSVファイル1内から、項目Bの”AAA”を含む文字を抽出して、項目Cと別のCSVファイル2の項目で値が一致しないものを、別CSVファイルにしたいというものなのですが、 CSVファイル1の項目Bから条件一致するデータが抜き出せず、困っております。 $a = Get-Content C:\test\\1.csv | Where-Object {$_.B -like "AAA*"} |out-file C:\test\X.csv -encoding Default | Where-Object {$_.B -like "AAA*"} が良くないのか、Out-fileでファイルが作成されるのですが、中にデータが0で抽出ができませんでした。 どこでうまくいっているのかを確認する方法もわからなくて質問して本当に申し訳ありませんが、少しでも何かヒントいただけると助かります。どうぞよろしくお願いいたします。

  • PowerShellについて

    PowerShellについて 以下の構文ですが、これは、Cドライブ配下のフォルダを取得し、 アクセス権を取得しCSVに吐き出す処理のようですが、このCSVは どこにはきだされるのでしょうか? ? Cドライブで実行してみましたが、何もファイルが作られていないようです。 Get-ChildItem c:\ -Recurse | Get-ACL |Export-Csv c:ACL-List.csv

  • セキュリティグループのメンバー一覧出力方法

    いつもお世話になります。 アクティブディレクトリ内に登録した全セキュリティグループのメンバーをcsvに出力したいのですが、 コマンドがわかりません。 まず、net group コマンドでセキュリティグループ グローバルの一覧をファイルに出力、 各グループごとの一覧を取得したいのですが、 ネットで見つけた下記コマンドのどの部分に各セキュリティグループ名を設定すればよいのでしょうか。 ※CN=SG_AccsessUser はセキュリティグループをあらわしていることはわかりました。 【とあるセキュリティグループのメンバーを出力するコマンドのサンプル】 C:\>ldifde -f c:\test.csv -d "CN=SG_AccsessUser,OU=FileAccess,OU=Groups ,OU=Group,OU=NK,DC=aa,DC=com" -u スクリプトはwscriptなどで作成する予定です。 どうぞ宜しくお願いします。

  • Accessの文字切り出しについて

    AccessでActiveDirectoryデータを管理したいと考えておりますが、ADからcsvdeで出力した後、Accessにインポートしています。 が、"DN"フィールドに、分割管理したい項目がまとめて入っており、分割する為のクエリを作成したいと思いますが、文字の抽出方法が分かりません。 CN=日本語ユーザー名(可変長),OU=OU名(可変長),DC=下位ドメイン名,DC=上位ドメイン名,DC=local ◎下記項目を切り出し CN=〇〇〇 OU=〇〇〇 単純に、Left関数・Mid関数では切り出し出来ない為、コーディング方法をお教え頂けましたら幸いです。

  • dsmoveコマンドをBATファイルで実行したい

    数百回のdsmoveコマンドをBATファイルで一括処理したいのですが、 うまくいかず困っています。良い方法があれば教えてください。 コマンドは以下のような感じですが、コピペしてコマンドプロンプトから実行すると 正常に動作するので、コマンド自体は正しいはずです。 dsmove "CN=test1,OU=Office,OU=test,DC=test,DC=kaisya,DC=co,DC=jp" -newname "test001" dsmoveが、バッチからでは実行できないということは無いですよね?

  • Export-Csvコマンド 

    PowerShellのExport-Csvコマンドについてです。 以下のコマンドで、Cドライブにある情報をCSV形式に出力しました。 PS C:\> Get-ChildItem |Export-Csv test01.csv -Encoding default そして、C:\script-testフォルダ内の情報をCSV形式で出力しようと Export-Csvコマンドを実行し、出来上がったCSVファイルを見てみると 何かがおかしい状態となっております。。CSV出力できていないのでしょうか? PS C:\script-test> Get-ChildItem | Export-Csv test01.csv -Encoding default ↓↓出来上がったCSVファイルの中身↓↓ #TYPE System.IO.FileInfo "PSPath","PSParentPath","PSChildName","PSDrive","PSProvider","PSIsContainer","VersionInfo","BaseName","Mode","Name","Length","DirectoryName","Directory","IsReadOnly","Exists","FullName","Extension","CreationTime","CreationTimeUtc","LastAccessTime","LastAccessTimeUtc","LastWriteTime","LastWriteTimeUtc","Attributes" "Microsoft.PowerShell.Core\FileSystem::C:\script-test\addres.txt","Microsoft.PowerShell.Core\FileSystem::C:\script-test","addres.txt","C","Microsoft.PowerShell.Core\FileSystem","False","File: C:\script-test\addres.txt InternalName: OriginalFilename: FileVersion: FileDescription: Product: ProductVersion: Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: ","addres","-a---","addres.txt","153","C:\script-test","C:\script-test","False","True","C:\script-test\addres.txt",".txt","2014/09/04 22:29:00","2014/09/04 13:29:00","2014/09/04 22:29:00","2014/09/04 13:29:00","2014/09/04 23:03:30","2014/09/04 14:03:30","Archive" "Microsoft.PowerShell.Core\FileSystem::C:\script-test\date.ps1","Microsoft.PowerShell.Core\FileSystem::C:\script-test","date.ps1","C","Microsoft.PowerShell.Core\FileSystem","False","File: C:\script-test\date.ps1 InternalName: OriginalFilename: FileVersion: FileDescription: Product: ProductVersion: Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: ","date","-a---","date.ps1","18","C:\script-test","C:\script-test","False","True","C:\script-test\date.ps1",".ps1","2014/09/02 19:22:53","2014/09/02 10:22:53","2014/09/02 19:22:53","2014/09/02 10:22:53","2014/09/02 19:22:53","2014/09/02 10:22:53","Archive" "Microsoft.PowerShell.Core\FileSystem::C:\script-test\sumtest.ps1","Microsoft.PowerShell.Core\FileSystem::C:\script-test","sumtest.ps1","C","Microsoft.PowerShell.Core\FileSystem","False","File: C:\script-test\sumtest.ps1 InternalName: OriginalFilename: FileVersion: FileDescription: Product: ProductVersion: Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: ","sumtest","-a---","sumtest.ps1","238","C:\script-test","C:\script-test","False","True","C:\script-test\sumtest.ps1",".ps1","2014/09/02 19:30:15","2014/09/02 10:30:15","2014/09/02 19:30:15","2014/09/02 10:30:15","2014/09/02 19:30:15","2014/09/02 10:30:15","Archive" "Microsoft.PowerShell.Core\FileSystem::C:\script-test\test1.csv","Microsoft.PowerShell.Core\FileSystem::C:\script-test","test1.csv","C","Microsoft.PowerShell.Core\FileSystem","False","File: C:\script-test\test1.csv InternalName: OriginalFilename: FileVersion: FileDescription: Product: ProductVersion: Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: ","test1","-a---","test1.csv","2619","C:\script-test","C:\script-test","False","True","C:\script-test\test1.csv",".csv","2014/09/04 23:15:30","2014/09/04 14:15:30","2014/09/04 23:15:30","2014/09/04 14:15:30","2014/09/04 23:15:30","2014/09/04 14:15:30","Archive" "Microsoft.PowerShell.Core\FileSystem::C:\script-test\test1.ps1","Microsoft.PowerShell.Core\FileSystem::C:\script-test","test1.ps1","C","Microsoft.PowerShell.Core\FileSystem","False","File: C:\script-test\test1.ps1 InternalName: OriginalFilename: FileVersion: FileDescription: Product: ProductVersion:

  • powershellの配列について

    すみませんが、powershellの配列について、困っていることがあります。 下記に教えていただければと思います。 【やりたいこと】 スペースがバラバラに入っているファイルの中身を配列に格納したい。 その際、スペースを省いて数字のみ配列に入れたい 【今の状態】 > $test4 = $(Get-Content -path "C:\a.txt") > echo $test4 1 2 3 4 5 6 7 89 > write-host $test4[0] 1 > write-host $test4[1] (スペースが認識されてしまう) > write-host $test4[2] 2 【望む結果】 $test4にファイルの中身を格納する。 その後、以下の結果にしたい。 > write-host $test4[0] 1 > write-host $test4[1] 2 > write-host $test4[7] 89