在PowerShell中的用户上下文中创建文件

时间:2010-09-17 19:45:47

标签: powershell impersonation

我正在尝试在特定用户上下文中使用powershell创建文件。例如,我的本地计算机上有一个用户user01,我想在其上下文中创建一个文件。

我正在做类似

的事情

New-Item c:\ file.txt -Credential User01

它有效,但提示我输入我不想要的密码。如果没有提示输入密码,我有什么方法可以做到这一点吗?

4 个答案:

答案 0 :(得分:2)

文件系统实际上不支持new-item上的凭证参数,所以我不确定“它的工作原理”是什么意思。它不会像传递的用户一样创建文件。实际上,文件系统提供者会说:

“提供程序不支持使用凭据。请在不指定凭据的情况下再次执行操作。”

采取有根据的猜测,我会说你正试图创建一个拥有不同所有者的文件。 PowerShell不能单独执行此操作,因此您需要以下非平凡的脚本:

http://cosmoskey.blogspot.com/2010/07/setting-owner-on-acl-in-powershell.html

它的工作原理是为您的安全令牌启用SeBackup权限(但您必须已经是管理员。)这允许您在文件上设置任意所有者。通常,您只能将所有者更改为管理员或您自己的帐户。

哦,这个脚本仅适用于PowerShell 2.0。

答案 1 :(得分:1)

您可以查看Windows实用程序takeown.exe,而不是在此脚本上使用PowerShell cmdlet或.NET脚本。但是,即使它要求您提供您要为其分配所有权的用户密码。

答案 2 :(得分:0)

好的,我在用户上下文中启动进程,然后创建一个文件。像魅力一样。

Password,FilePath和UserName作为参数从命令行传入。

$ pw = convertto-securestring“$ Password”-asplaintext -force $ credential = new-object -typename system.management.automation.pscredential -argumentlist“-default - ”,$ pw $ localArgs =“/ c echo> $ FilePath” [System.Diagnostics.Process] ::开始(“cmd”,$ localArgs,“$ UserName”,$ credential.Password,“$ Computer”)

答案 3 :(得分:0)

或者只是打电话给SUBINACL.EXE?不需要密码。