PowerShellでフォルダのアクセス権を取得しcsvに出力するコードを書きました。
以下のコード1でエラーのため上手く実行できず、コード2のようにコード1の内容から1行だけ追記して実行したところ、偶然エラーなく実行できました。
※追記した行はコード2のコメント参照
しかし、なぜエラーが出ていたのか、コード2ではなぜうまく実行出来たのか、
わからないのでご教授ください。
###コード1
Powershell
1#.NETオブジェクト[System.Collections.ArrayList]作成 2$array = New-Object System.Collections.ArrayList 3 4#対象フォルダを配列へ 5[array]$Folders = "test1","test2","test3" 6 7#CSV保存先 8$CsvSavePath = "C:\AclResult\acl.csv" 9 10#配列処理 11 foreach($Folder in $Folders){ 12 $FolderPath = "C:\AclTest\" + $Folder 13 $ACLs = Get-Acl -Path $FolderPath 14 15 foreach( $ACL in $ACLs.access ){ 16 $array.add( 17 $ACL.IdentityReference + "," + ` 18 $ACL.FileSystemRights + "," + ` 19 $ACL.AccessControlType + "," + ` 20 $ACL.IsInherited + "," + ` 21 $ACL.InheritanceFlags + "," + ` 22 $ACL.AreAccessRulesProtected ` 23 ) 24 } 25 } 26#ソート処理 27$array.Sort() 28 29#1行目に下記項目を代入 30$array.insert(0,"Path,` 31 IdentityReference,` 32 FileSystemRights,` 33 AccessControlType,` 34 IsInherited,` 35 InheritanceFlags,` 36 AreAccessRulesProtected"` 37 ) 38#結果をcsvへ保存 39$array > $CsvSavePath 40 41 42 43
###発生している問題・エラーメッセージ
[System.Security.Principal.NTAccount] に 'op_Addition' という名前のメソッドが含まれないため、メソッドの呼び出しに失敗しました。 発生場所 行:16 文字:12 + $array.add( + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (op_Addition:String) []、RuntimeException + FullyQualifiedErrorId : MethodNotFound
###コード2
#.NETオブジェクト[System.Collections.ArrayList]作成 $array = New-Object System.Collections.ArrayList #対象フォルダを配列へ [array]$Folders = "test1","test2","test3" #CSV保存先 $CsvSavePath = "C:\AclResult\acl.csv" #配列処理 foreach($Folder in $Folders){ $FolderPath = "C:\AclTest\" + $Folder $ACLs = Get-Acl -Path $FolderPath foreach( $ACL in $ACLs.access ){ $array.add( ##############追記したコード「$Folder +"," + `」########### $Folder +"," + ` $ACL.IdentityReference + "," + ` $ACL.FileSystemRights + "," + ` $ACL.AccessControlType + "," + ` $ACL.IsInherited + "," + ` $ACL.InheritanceFlags + "," + ` $ACL.AreAccessRulesProtected ` ) } } #ソート処理 $array.Sort() #1行目に下記項目を代入 $array.insert(0,"Path,` IdentityReference,` FileSystemRights,` AccessControlType,` IsInherited,` InheritanceFlags,` AreAccessRulesProtected"` ) #結果をcsvへ保存 $array > $CsvSavePath
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/28 04:36