여기에 제공된 응답보다 : Powershell Enter Session find path bug, 나는 스크립트에서 내 주변에서 작동하지 않는 다른 벽을 공격했습니다. 아래 스크립트는 오류를 반환합니다 :Powershell "="인식 할 수없는 cmdlet 오류가 없습니다.
The term '=' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.
$sb = [ScriptBlock]::Create(@"
$Acl = (Get-Item -path D:\Websites\$Sitename).GetAccessControl('Access')
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule('BUILTIN\IIS_IUSRS', 'Modify', 'ContainerInherit,ObjectInherit', 'None', 'Allow')
$Acl.SetAccessRule($Ar)
Set-Acl -path $Path -AclObject $Acl
"@)
Invoke-Command -Session $Session -ScriptBlock $sb
스크립트 블록 변수 ($ sb)를 만들 수 있지만 호출 할 때 오류가 발생합니다. 나는 그것을 $ Acl 변수의 설정으로 좁혔으며, 행운을 빌어 다양한 방법으로 다시 써 보았습니다. 내가 뭘 놓치고 있니?
변경을 '인용와 변수 확장에 대한 자세한 내용은
about_Quoting_Rules
help topic를 참조 @ ""@'로를'@' '@'(단일 인용 여기에 문자열을 대신 큰 따옴표보다) 원 –$ sitename 변수가 스크립트 블록에 전달되면 작업을 확장해야합니까? $ acl, $ ar $ acl 및 $ path 변수가 변수로 처리되어야하지만 $ sitename 변수가 확장되어야합니다. – Karl
이를 수용하기 위해 답을 업데이트했습니다. –