我在我们所有的计算机上设置了一个文件夹,用于存放随机日志文件、配置等,并使用以下 PowerShell 进行部署:
#Create directory if it does not already exist
$path = "C:\Wagner"
[System.IO.Directory]::CreateDirectory($path)
#Remove inheritance
$acl = Get-Acl $path
$acl.SetAccessRuleProtection($true,$false)
#Allow SYSTEM access
$System = [System.Security.AccessControl.FileSystemAccessRule]::new(
"SYSTEM",
"FullControl",
"ContainerInherit, ObjectInherit", # inheritanceFlags
"InheritOnly", # propagationFlags
"Allow"
)
$acl.SetAccessRule($System)
#Allow Admin access
$Admins = [System.Security.AccessControl.FileSystemAccessRule]::new(
"BUILTIN\Administrators",
"FullControl",
"ContainerInherit, ObjectInherit", # inheritanceFlags
"InheritOnly", # propagationFlags
"Allow"
)
$acl.SetAccessRule($Admins)
$acl | Set-Acl $path
如果我检查示例计算机上的 ACL,则一切看起来都是正确的:
PS C:\> (Get-ACL C:\Wagner).Access
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : NT AUTHORITY\SYSTEM
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : InheritOnly
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : BUILTIN\Administrators
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : InheritOnly
但是,如果我远程进入该机器并尝试安装程序(在本例中为 Tableau),我会收到错误-2147023274
,我认为这意味着它无法写入日志文件。
.\TableauDesktop-64bit-2022-4-0.exe /quiet /norestart /log "c:\Wagner\tableauDesktopInstall.log" ACCEPTEULA=1 ACTIVATE_KEY="****-****-****" REMOVEINSTALLEDAPP=1
以上是我正在运行的命令(在提升的 PowerShell 窗口中),检查后$LASTEXITCODE
得到-2147023274
。
如果我再次运行该命令(不带),/log
程序将成功安装。我的 ACL 有问题吗?这全都是在 Windows 10 机器上。