2016-08-16 7 views
1

にグローバルセキュリティグループを追加しようと私はいくつかの会社の変数に基づいて、新しいフォルダを作成するスクリプトを書いて、後でこのフォルダのアクセス許可を処理するためのユーザーとグループを追加します。 私は同じスクリプト内のフォルダに1、またはそれ以上、ADグループを追加するためのまともな方法を見つけることができません。フォルダ

$parentfolder = Read-Host -Prompt "Please enter the name of the parent folder (i.e. FOLDER1234)" 
$folder = Read-Host -Prompt "Please enter the name of the new network folder" 

New-Item \\DC02\product\$parentfolder\$folder -type directory 
Write-Host "Folder has been created!" 
Start-Sleep -s 2 

$newgroup = Read-Host -Prompt "Please enter the new group name for this folder (1234-1234-12xx format)" 
$description = Read-Host -Prompt "Please enter the abbreviation of the product (i.e. PDPROD)" 
NEW-ADGroup -Name $newgroup -GroupScope Global -Description $description -Path "OU=Project Groups,DC=ourdomain,DC=nl" 

do { 
    $stringquit = Read-Host -Prompt "Please enter the member username's to add or press Q if you are done." 
    $userfilter3 = Get-ADUser -Filter {sAMAccountName -eq $stringquit} 
    if ($userfilter3 -eq $Null,"Q") { 
     Write-Host = "User does not exist in AD, please try again" 
     Start-Sleep -s 1 
    } else { 
     if ($stringquit -ne "Q") { 
      Write-Output -InputObject $stringquit | Out-File -Append c:\userlist.csv 
     } else { 
      Write-Host "You pressed Q, moving on." 
     } 
    } 
} until ($stringquit -eq "Q") 

$addgroup = "cn=$newgroup,ou=Project Groups,dc=ourdomain,dc=nl" 
$list = Get-Content c:\userlist.csv 
foreach ($user in $list) { 
    Add-ADGroupMember -Identity $addgroup -Member $user 
} 

#set permissions 
$acl = Get-Acl \\DC02\product\$parentfolder\$folder 
$ar = New-Object System.Security.AccessControl.FileSystemAccessRule("1234-all","Modify"."ContainerInherit,ObjectInherit","None","Allow") 
$acl.SetAccessRule($ar) 
Set-Acl \\DC02\product\$parentfolder\$folder $acl 
+0

@Ansgar:タグはタイトルから削除する必要があるかどうかなど、いくつかの競合があります - フォームで確かにtaggyタイトル 'X | y | 「質問」はアイロンをかけなければならないが、「Powershell」のようなキーワードを削除すると、タグが表示されないホットな質問や関連サイドバーで重要なコンテキストが失われる。 – halfer

答えて

1

AddAccessRule()SetAccessRule()を置き換えます

は、ここに私のスクリプトです。

+0

最後に設定されたパーミッションの部分が実際問題です。残りはうまくいくようです。ただし、最初のエラーは、 "line2"が最後の部分から実行されているときに表示されます。 – Kevin

+0

PS C:\ PS>新オブジェクトSystem.Security.AccessControl.FileSystemAccessRule( "6001-すべて"、 "ContainerInherit、ObjectInherit" を "変更"、 "なし"、 "許可"。) 新オブジェクト:見つけることができません"FileSystemAccessRule"と引数count: "4"のオーバーロード。ラインで :1つの文字:1 +新オブジェクトSystem.Security.AccessControl.FileSystemAccessRule( "6001-すべて"、「変更... + ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:はInvalidOperation:(:) [新オブジェクト]、メソッドの例外 + FullyQualifiedErrorId:ConstructorInvokedThrowException、Microsoft.PowerShell.Commands.NewObjectCommand – Kevin

+0

このステートメントに誤字があります。「Modify」と「ContainerIn herit ObjectInherit」の間のドットをカンマで置き換えてください。 –