매개 변수의 위치 정의에 문제가 있습니다. 예를 들어, $Folder
을 내 함수에 파이프하면 다른 매개 변수의 위치가 변경됩니다.매개 변수 ValueFromPipeline 및 위치 변경
일반적으로 매개 변수 $Folder
에는 position=0
이 있지만 기능에 파이프가 있으면 파이프 라인 기호 앞에 위치 0이 더 이상 없음을 고려하지 않습니다.
이 기능은 스위치가 있거나 스위치가없는 경우 모두 사용할 수 있습니다. $Recurse
및 $Inheritance
은 On/Off
입니다. 주 목적은 폴더에 대한 사용 권한을 설정하거나 상속을 설정하는 것입니다. 둘 다의 조합도 가능합니다. 가능
[CmdletBinding(SupportsShouldProcess=$True,DefaultParametersetName="SetPermissions")]
Param(
[parameter(Mandatory=$true,ValueFromPipeline=$true,Position=0)]
[ValidateNotNullOrEmpty()]
[ValidateScript({Test-Path $_ -PathType Container})]
[String[]]$Folder,
[parameter(Mandatory=$true,Position=1,ParameterSetName='SetPermissions')]
[parameter(Mandatory=$false,ParameterSetName='SetInheritance')]
[ValidateNotNullOrEmpty()]
[String]$SAMaccountName,
[parameter(Mandatory=$true,Position=2,ParameterSetName='SetPermissions')]
[parameter(Mandatory=$false,ParameterSetName='SetInheritance')]
[ValidateNotNullOrEmpty()]
[ValidateSet('ReadAndExecute','Modify','FullControl','ListFolderContents')]
[String]$Grant,
[parameter(Mandatory=$false)]
[ValidateNotNullOrEmpty()]
[String]$Domain = 'MyDomain',
[parameter(Mandatory=$false,Position=3,ParameterSetName='SetPermissions')]
[parameter(Mandatory=$true,Position=1,ParameterSetName='SetInheritance')]
[ValidateNotNullOrEmpty()]
[ValidateSet('On','Off')]
[String]$Inheritance,
[Switch]$Recurse
)
모든 옵션 :
# SetPermissions
Set-ACLspecial -Folder 'C:\Folder' -SAMaccountName 'Bob' -Grant ReadAndExecute
Set-ACLspecial -Folder 'C:\Folder' -SAMaccountName 'Bob' -Grant ReadAndExecute -Recurse
Set-ACLspecial -Folder 'C:\Folder' -SAMaccountName 'Bob' -Grant ReadAndExecute -Inheritance On
Set-ACLspecial -Folder 'C:\Folder' -SAMaccountName 'Bob' -Grant ReadAndExecute -Inheritance On -Recurse
Set-ACLspecial 'C:\Folder' 'Bob' ReadAndExecute
Set-ACLspecial 'C:\Folder' 'Bob' ReadAndExecute -Recurse
Set-ACLspecial 'C:\Folder' 'Bob' ReadAndExecute On
Set-ACLspecial 'C:\Folder' 'Bob' ReadAndExecute On -Recurse
'C:\Folder' | Set-ACLspecial 'Bob' ReadAndExecute
'C:\Folder' | Set-ACLspecial 'Bob' ReadAndExecute -Recurse
'C:\Folder' | Set-ACLspecial 'Bob' ReadAndExecute On
'C:\Folder' | Set-ACLspecial 'Bob' ReadAndExecute On -Recurse
# SetInheritance
Set-ACLspecial 'C:\Folder' -Inheritance Off
Set-ACLspecial 'C:\Folder' -Inheritance Off -Recurse
'C:\Folder' | Set-ACLspecial -Inheritance Off
'C:\Folder' | Set-ACLspecial -Inheritance Off -Recurse
현재 구문 :
Set-HCaclTEST [-Folder] <String[]> [-SAMaccountName] <String> [-Grant] <String> [-Domain <String>] [[-Inheritance] <String>] [-Recurse] [-WhatIf] [-Confirm] [<Common
Parameters>]
Set-HCaclTEST [-Folder] <String[]> [-SAMaccountName <String>] [-Grant <String>] [-Domain <String>] [-Inheritance] <String> [-Recurse] [-WhatIf] [-Confirm] [<CommonPa
rameters>]
오류 :
'C:\Folder' | Set-ACLspecial 'Bob' ReadAndExecute
# Test-Path on 'Bob' is not working... PowerShell sees Bob as the variable `$Folder`, but it's not.
오류가 발생합니까? 아니면 예상대로 행동하지 않습니까? 오류가 발생하는 경우 질문에 추가 할 수 있습니까? –
OP가 오류로 업데이트되었습니다. – DarkLite1
뻔뻔한 프로모션 : [탄소 모듈] (http://get-carbon.org/help/Grant-Permission.html)의 [Grant-Permission] (http://get-carbon.org/help/Grant-Permission.html) 기능을 확인하십시오. /). 파일, 디렉토리, 레지스트리 키 및 (곧) 인증서에 대한 사용 권한을 부여합니다. –