2014-05-25 2 views
1

set-acl cmdlet에서 내 함수를 사용하려고하지만 올바르게 작동하지만 내 함수는 간단한 "문자열"로 인식됩니다. 당신이 문자열로 쓴 때문에cmdlet의 함수 이름

$acl = Get-Acl C:\MSI -Verbose 
$acl.SetAccessRuleProtection($True, $False) 
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule ("Get-GroupName -SID 'S-1-1-0'","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") -Verbose 
$acl.AddAccessRule($rule) 
$rule = New-ObjectSystem.Security.AccessControl.FileSystemAccessRule("Get-GroupName -SID 'S-1-5-32-544'","Readandexecute", "ContainerInherit, ObjectInherit", "None", "Allow") -Verbose 
$acl.AddAccessRule($rule) 
Set-Acl C:\MSI $acl 

답변

2

은 그것은 문자열로 인식합니다. . 모든 내부 따옴표 ("또는 ')는 문자열

함수는 문자열 값을 반환하는 경우, 당신은이처럼 사용할 수 있습니다

$acl = Get-Acl C:\MSI -Verbose 
$acl.SetAccessRuleProtection($True, $False) 
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule ((Get-GroupName -SID 'S-1-1-0'),"FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") -Verbose 
$acl.AddAccessRule($rule) 
$rule = New-ObjectSystem.Security.AccessControl.FileSystemAccessRule((Get-GroupName -SID 'S-1-5-32-544'),"Readandexecute", "ContainerInherit, ObjectInherit", "None", "Allow") -Verbose 
$acl.AddAccessRule($rule) 
Set-Acl C:\MSI $acl 
+0

지금은 제대로 작동 감사합니다. – kekimian