共有とそのプロパティの 1 行の説明を含むテキスト ファイルを読み取る Powershell スクリプトがあります。
次に、共有ごとに、オブジェクトをプロパティとともに配列に追加します。
多くは共通のプロパティを持ちますが、少数の共有にしか表示されないものもあります。
完成した配列を にパイプするExport-CSV
と、結果の CSV には、配列内の最初のオブジェクトのプロパティに一致する列のみが含まれます。
どんなアイデアや助けもありがたく受け取った。
コードは次のとおりです。
$shares_only = gc \\server\share\SHARES.txt | where {$_ -match '^*TYPE = DISK'}
$share_index = @()
$shares_only |foreach {
$sharename = ($_.Split(" ")[1])
$_ -match '\([\w\s.,"=<>()\/\*\+\-]*\);'|out-null
$shareparams = $matches[0]
$paramlist = ($shareparams.Substring(1,($shareparams.Length -3))).Split(",")
$obj = $null
$obj = New-Object System.Object
$obj | Add-Member -type NoteProperty -Name NAME -Value $sharename
$paramlist | foreach {
$obj `
| Add-Member -type NoteProperty -Name ($_.Split("=")[0]) -Value ($_.Split("=")[1])
}
$share_index += $obj
}
$share_index | Select * | Export-CSV -notype \\server\share\Shares.csv
例として、配列内の最初の 2 つのオブジェクトを次に示します ($share_index[0..2]
コンソールへの出力に使用):
NAME : _ACCTEST_
TYPE : DISK
PREFIX : (<USERCODE>)
AREABYTES : 184320
ACCESS : ALL
FAMILY : ACCTESTPACK
DOWNSIZEAREA : TRUE
NAME : _HOME_
TYPE : DISK
PREFIX : (<USERCODE>)
COMMENT : Private user files
AREABYTES : 184320
ACCESS : ALL -EXTRACT
FAMILY : <FAMILY>
DOWNSIZEAREA : TRUE
ALLOWGUESTACCESS : TRUE
CSV の最初の 3 行は次のとおりです。
"NAME","TYPE ","PREFIX ","AREABYTES ","ACCESS ","FAMILY ","DOWNSIZEAREA "
"_ACCTEST_"," DISK "," (<USERCODE>) "," 184320 "," ALL "," ACCTESTPACK "," TRUE "
"_HOME_"," DISK "," (<USERCODE>) "," 184320 "," ALL -EXTRACT "," <FAMILY> "," TRUE "
プロパティが共有の配列にあるにもかかわらずCOMMENT
、プロパティが欠落していることがわかります。ALLOWGUESTACCESS
_HOME_
編集: @JPBlancs の回答のわずかに変更されたバージョンを受け入れたため、コードの最後の 2 行は次のようになりました。
$fixed_index = $share_index | Sort-Object -Property @{expression={(($_.psobject.Properties)|Measure-Object).count}} -Descending | ConvertTo-CSV -notype
$fixed_index | ConvertFrom-CSV | Sort -Property Name | Export-CSV -notype \\server\share\Shares.csv
したがって、提案どおりに実行してから、新しいオブジェクトで CSV に変換します。次に、そのオブジェクトを CSV から元に変換し、新しいプロパティを保持し、名前でもう一度並べ替えて、必要なアルファベット順のリストを取得してから、もう一度 CSV にエクスポートします。
たとえば、次のようになります。
"NAME","TYPE","PREFIX","PUBLIC","COMMENT","AREABYTES","ACCESS","FAMILY","DOWNSIZEAREA","ALLOWGUESTACCESS"
"_ACCTEST_"," DISK "," (<USERCODE>) ","",""," 184320 "," ALL "," ACCTESTPACK "," TRUE ",
"_HOME_"," DISK "," (<USERCODE>) ",""," Private user files "," 184320 "," ALL -EXTRACT "," <FAMILY> "," TRUE "," TRUE "