[英]Run command as System User in Powershell
我在网上找到了几个答案,但并不是我真正想要的。
问题如下: 使用“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 系统上。 所以没有本地管理员帐户。
长话短说
我想通过powershell继承系统账户对文件的ACL权限,怎么办?
https://github.com/mkellerman/Invoke-CommandAs
使用提供的凭据或 SYSTEM 对本地/远程计算机执行 Invoke-Command 的功能。 返回 PSObjects,处理网络中断并解决任何双跳问题。
试试看,如果这能解决您的问题,请告诉我。
如果您可以安装(非常有用的)第 3 方程序,您可以尝试以下操作。 这是一个 portable.zip,没有真正的安装。
以管理员身份运行:
C:\WINDOWS\system32>nircmd.exe elevatecmd runassystem c:\windows\System32\cmd.exe
启动一个新的 cmd 窗口:
Microsoft Windows [Version 10.0.18362.418]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\WINDOWS\system32>whoami
nt authority\system
C:\WINDOWS\system32>
域管理员通过本地管理员组获得访问权限。 本地管理员可以获得任何本地对象的所有权,并随后授予该对象新的权限。
以管理员身份运行这样的东西应该做你想做的:
takeown /f C:\some\file_or_folder /a /r /d:y
icacls C:\some\file_or_folder /reset /t /c /q
切勿将 SYSTEM 帐户用于此类事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.