我正在尝试在特定用户上下文中使用powershell创建文件。例如,我的本地计算机上有一个用户user01,我想在其上下文中创建一个文件。
我正在做类似
的事情New-Item c:\ file.txt -Credential User01
它有效,但提示我输入我不想要的密码。如果没有提示输入密码,我有什么方法可以做到这一点吗?
答案 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?不需要密码。