在Powershell中以系统用户身份运行命令

时间:2017-02-22 12:20:01

标签: windows powershell acl local-system-account

我在网上找到了几个答案,但实际上并不是我要搜索的内容。

问题如下: 使用" Networker"还原文件时,文件的ACL与备份文件时的ACL相同,即文件恢复到的文件夹中的继承关系。这意味着ACL的继承性不会影响新恢复的文件。

这让我有一个问题,即只有3个帐户有权更改ACL。

  • 用户,该文件属于
  • 域管理员
  • 系统帐户

要解决此问题,我想运行一个自动脚本来修复ACL并激活正确的继承。

脚本的系统用户必须是三者之一。 用户正在更改,因此不是一个有效的选择,我也不想留下任何域管理员凭据,也不想授予服务帐户域管理员权限。

这使我得到了系统帐户来完成这项工作,这就是问题所在:

如何在系统帐户凭据下的powershell中执行任务?

我试过

$username = "NT Authority\System"
$password = ConvertTo-SecureString -String "" -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist @($username, $password)

由于密码为空,我无法用它创建凭据。

  

所有区域设置中的帐户名称为。\ LocalSystem。名字,   也可以使用LocalSystem或ComputerName \ LocalSystem。此帐户   没有密码。   https://msdn.microsoft.com/de-de/library/windows/desktop/ms684190(v=vs.85).aspx

所以现在我对如何让它发挥作用感到有些困惑。

编辑: 文件系统在EMC上运行,并不是真正的Windows文件系统,但只是挂钩到Linux系统上。所以没有本地管理员帐户。

TL; DR

我想使用带有powershell的系统帐户继承文件的ACL权限,怎么做?

3 个答案:

答案 0 :(得分:1)

Domain Admins可通过本地Administrators组进行访问。本地管理员可以获得任何本地对象的所有权,然后为该对象授予新的权限。

以管理员身份运行这样的事情应该做你想做的事情:

takeown /f C:\some\file_or_folder /a /r /d:y
icacls C:\some\file_or_folder /reset /t /c /q

永远不要将SYSTEM帐户用于此类事情。

答案 1 :(得分:1)

如果可以安装(非常有用的)第三方程序,则可以尝试以下操作。这是一个便携式.zip,没有实际安装。

以管理员身份运行:

ParentModel.objects.all().values('ParentName').annotate(
   ChildASum = Sum('childamodel__ChildAValue),
   ChildBSum = Sum('childbmodel__ChildBValue),
)

启动一个新的cmd窗口:

C:\WINDOWS\system32>nircmd.exe elevatecmd runassystem c:\windows\System32\cmd.exe

https://www.nirsoft.net/utils/nircmd.html

答案 2 :(得分:0)

https://github.com/mkellerman/Invoke-CommandAs

使用提供的凭据或SYSTEM对本地/远程计算机执行Invoke-Command调用功能。返回PSObject,处理网络中断并解决任何Double-Hop问题。

尝试一下,让我知道这是否可以解决您的问题。