3

Powershell 2.0 で正常に動作する新しいスターター スクリプトがありますが、SQL を動作させるために Powershell 3.0 にアップグレードする必要がありました。ただし、これにより、Set-Acl を使用するスクリプトのすべての部分が壊れます。PowerShell 2.0 の使用はオプションではありません。誰かがこれを回避する方法を見つけましたか:私のコード:

#Set home directory permissions
$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit
$propagation = [system.security.accesscontrol.PropagationFlags]"None"
$acl = Get-Acl $newfolder
$accessrule = New-Object system.security.AccessControl.FileSystemAccessRule("$username", "FullControl", $inherit, $propagation, "Allow")
$acl.AddAccessRule($accessrule)
set-acl -aclobject $acl $newfolder
write-host permissions set

#Set home folder owner
$acl = Get-Acl $newfolder;
$domain = "mydomain" 
$sid = New-Object System.Security.Principal.NTAccount("$domain\$username");
$acl.SetOwner($sid);
Set-Acl $newfolder $acl; 
write-host owner set 
4

2 に答える 2

1

パラメータをコロンでバインドしてみてください。

例:

前:set-acl -aclobject $acl $newfolder

後:set-acl -aclobject:$acl -Path:$newfolder

注: $newfolder のフル パスを使用します。

set-acl -aclobject:$acl -path:$newfolder.FullName

説明: Powershell コマンドレットはバインドと配置を順序付けています。コロンを使用すると、オブジェクトの順序や種類に関係なく、値が正しいパラメーターに割り当てられます。プロパティはエラー.FullNameを防ぎSetSecurityDescriptorます。

于 2013-11-06T19:17:59.813 に答える