0

HP ALM QC インストールからすべてのユーザーを取得し、これを実行する Powershell スクリプトを用意したいと考えています。問題は、出力をスペースで埋めて読みやすくすることだと思います。

これがスクリプトです

$ServerInstance = "qc-server "
$Database = "qcsiteadmin_db "
$ConnectionTimeout = 30
$Query = "select USER_NAME, FULL_NAME, EMAIL from [td].USERS"
$QueryTimeout = 120

$conn=new-object System.Data.SqlClient.SQLConnection
$ConnectionString = "Server={0};Database={1};Integrated Security=True;Connect Timeout={2}" -f $ServerInstance,$Database,$ConnectionTimeout
$conn.ConnectionString=$ConnectionString
$conn.Open()
$cmd=new-object system.Data.SqlClient.SqlCommand($Query,$conn)
$cmd.CommandTimeout=$QueryTimeout
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)
$conn.Close()
$ds.Tables

このスクリプトにより、次の出力が得られます。

USER_NAME                               FULL_NAME                               EMAIL                                 
---------                               ---------                               -----                                 
user01                                  First Last                              user01@foo.com           
user02                                  First Last                              user02@foo.com             
user03                                  First Last                              user03@foo.com          

多くのスペースを含む適切に集計されたデータにより、Excel へのインポートがかなり困難になります...

次に、SQL クエリをより適したものに変更しようとしました。つまり、セミコロンで区切られた出力を作成しようとしました。

$Query = "select USER_NAME + ';' + FULL_NAME + ';' + EMAIL from [td].USERS"

次の出力が得られたという点で、これはほとんど機能しました。

Column1
-------

user01;First Last;user01@foo.com
user02;First Last;user02@foo.com
user03;First Last;user03@foo.com

表示されていないのは、すべての行の最後に 119 番目の位置までスペースが埋め込まれていることです。これは大量のスペースです...

では、最後に私の質問: どうすればすべてのスペースを取り除くことができますか? 上記のスクリプトでそれを実行できますか、それとも最初の出力で使用する別のスクリプトが必要ですか?

4

2 に答える 2

0

余分なスペースを削除するようにデータベースに指示します (フィールドが ではchar(120)なくあるように聞こえますvarchar)。

$Query = "select rtrim(USER_NAME) as USER_NAME, rtrim(FULL_NAME) as FULL_NAME, rtrim(EMAIL) as FULL_NAME from [td].USERS"

次に、Excel 用にクリーンに CSV にエクスポートします。

$ds.Tables | export-csv FILENAME -notypeinformation
于 2013-06-13T16:19:36.910 に答える
0

csv ファイルに直接エクスポートしてみてください。

$ds.Tables | Export-Csv file.csv 
于 2013-06-13T13:54:10.413 に答える