0

ここの初心者...みんなの助けと意見は大歓迎です!

30,000 ビュー: ネットワークから削除できる/削除する必要がある「古いデータ」に関するレポートを作成します。

ステップ 1. FullName、Name、および Length の値を含むサーバーのグループから、「ST_」または「EDDS1」で始まるフォルダーのリストを収集します。

$Path = 
"\\server1.domain.com\b\sqlbackups",
"\\server1.domain.com\b\sqlbackups",
"\\server1.domain.com\b\sqlbackups";

$BackupFolders = @(gci $Path -filter "ST_*" | ?{ $_.PSIsContainer}) | Select FullName,Name,Length
$BackupFolders += @(gci $Path -filter "EDDS1*" | ?{ $_.PSIsContainer}) | Select-Object FullName Name, Length

$BackupFolders | Export-CSV C:\BackupFolders.csv

これは長さの列を引き出しますが、その列には値がリストされていません...

ステップ 2. このリストを SQL テーブルと比較します。値が参照ドキュメント (ステップ 1) および SQL の特定の列に存在する場合は、SQL の「ステータス タブ」を参照してください。SQL テーブルの「ステータス タブ」が「非アクティブ」の場合、Step1 から FullName、Name、Length、SQL テーブルから Client、Project Name を csv に出力します。

$sqlConnection = New-Object System.Data.SqlClient.SqlConnection
$sqlConnection.ConnectionString = "Server=sqlserver\sharename;Database=database;Integrated Security=True"
$sqlConnection.Open()

$sqlCommand = New-Object System.Data.SqlClient.SqlCommand
$sqlCommand.CommandText = "SELECT * FROM [Table].[dbo].[Matters] WHERE [Status] NOT LIKE 'Active%'"
$sqlCommand.Connection = $sqlConnection
$sqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$sqlAdapter.SelectCommand = $sqlCommand
$Dataset = New-Object System.Data.DataSet
$sqlAdapter.Fill($Dataset)
$sqlConnection.Close()

$MatterStatus = @"
C:\MatterStatus.csv
"@

$Dataset.Tables[0] | Select Client,Project,MatterStatus | Export-Csv c:\MatterStatus.csv

質問 1 - ステップ 1 で作成した csv にリストされる長さ属性を取得するにはどうすればよいですか?

質問 2 - ここで正しい軌道に乗っていますか? ステップ 1 と同様に、最後の値が反映されませんでした...csv の MatterStatus が空白です。

提案/ヒントは大歓迎です!

4

1 に答える 1