前提・実現したいこと
PowerShell初心者です。
初めての質問であり、質問内のわかりづらい部分等、拙い記載がありましたら申し訳ございません。
PowerShellにて、ディレクトリのアクセス権限を取得するスクリプトおよび、取得したデータをインポートするシェルを作成中です。
具体的には正サーバからアクセス権限をcsvに出力し、災対用サーバにて、csvからデータを読み取り、
正サーバと同様の設定を行いたいと考えております。
疑問点
・csvからデータを読み取る為の書き方が理解できていません。
・csvに出力する際にキーに対して値が複数ある際に、キー,値,値となってしまいます。
実現したい出力は
キー,値
キー,値 となりますが、出力方法が分かりません。
該当のソースコード
■アクセス権出力用(dir-csv.ps1)
$target = "c:\temp"
foreach (FolderList in Get-ChildItem | where-object { $_.PSIsContainer })
{
$shareacl = (Get-ACL $FolderList).Access | Select IdentityReference | Select-String -Pattern 'domainname' | Select-String -Pattern 'user[0-9][0-9][0-9]'
Write-Host "FolderList","shareacl"
}
■csv出力用
$outfile = "c:\userlist.csv"
Powershell -NoProfile -File ".\dir-csv.ps1" > $outfile
#######出力後成型
$data = Get-Content $outfile | Foreach-Object { $_ -replace "{IdentityReference=","" }
$data | Out-File $outfile
$data = Get-Content $outfile | Foreach-Object { $_ -replace "}","" }
$data | Out-File $outfile
$data = Get-Content $outfile | Foreach-Object { $_ -replace " ","," }
$data | Out-File $outfile
試したこと
・csvからデータを読み取る方法
ヘッダーを付ける
$outfile = "c:\userlist.csv"
$target = "c:\temp"
$csv_content = Get-Content -Path "$outfile" -Encoding String
$csv_content = $csv_content | ConvertFromCsv -Header "dir","user1","user2"...
補足情報
具体的に実現したいことは以下です。
■csvを下記のようにしたい
test1,user001
test2,user001,user002
↓
test1,user001
test2,user001
test2,user002
■csvからディレクトリ名、ユーザ名を抽出しアクセス権限をループして与える
$target = "c:\temp"
cd $target
$User_or_Group_name = 'ここにcsvから抽出したユーザ名を入れたい'
$Folder_Path = "ここにvsvから抽出したディレクトリ名を入れたい($target+抽出したディレクトリ名)"
$acl = Get-ACL $FolderPath
$Permission = ("$User_or_Group_name","FullControl","ContainerInherit","None","Allow")
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $Permission
$acl.SetAccessRule($AccessRule)
$acl | Set-ACL $FolderPath
上記をループさせたい。
以上となります。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。