【问题标题】:Run BAT file as a Local User Account以本地用户帐户运行 BAT 文件
【发布时间】:2016-03-15 21:04:42
【问题描述】:

我从另一个问题中提取了这个,但我似乎无法完成这个工作。

我需要以本地管理员帐户运行此 .bat 文件。我希望用户能够在没有本地管理员权限的情况下运行和安装它。

不过我不知道出了什么问题。

$username = 'localadmin'
$password = 'passwordforlocaladmin'
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword
Start-Process -Filepath "p:\kaceInstaller\kaceinstall3.bat" -Credential $credential

我得到的错误是:

Start-Process : 此命令无法执行,因为错误:目录
名称无效。
在 P:\kaceInstaller\misc\kaceSetup.ps1:7 char:14
+ 启动进程 
    

【问题讨论】:

  • 我假设P盘是网络盘?如果是这样,您可能需要在其中添加一条关于 net use P: 我认为这个 cmd 在 PS 中的等效项是 New-PSDrive –Name “P” –PSProvider FileSystem –Root “\\touchsmart\share ”——坚持
  • 谢谢 - 网络驱动器已通过组策略映射到 P:。它还从同一工作目录调用 .bat 文件。
  • 这个错误让我觉得它不喜欢那个路径,如果你从 C 运行它,它的行为是否相同?
  • 如果 Start-Process 与凭据一起使用类似于右键单击以管理员身份运行来运行快捷方式,那么我认为一切都在隐藏的本地管理员帐户的上下文中运行,该帐户没有驱动器字母映射。如果您使用 UNC 路径,它可以工作吗?
  • @superKing,是的,问题出在网络驱动器上。它是为登录用户映射的,但是您试图在另一个未登录的用户下启动该进程,因此未映射驱动器。我已经看过很多次了,但我不知道有什么解决方法。

标签: powershell


【解决方案1】:

如果您希望允许用户以本地管理员帐户的身份运行某些东西,而无需有效地向他们提供本地管理员帐户的密码,我建议您创建一个以本地管理员身份运行的计划任务。用户可以手动触发该任务,然后将在本地管理员帐户下执行。在不保存凭据的情况下创建任务应该可以工作,但即使您必须保存凭据,您的用户也无法访问它们。

但是,要访问网络共享,您可能需要使用计划任务运行的脚本中的显式凭据连接/断开共享,因为本地帐户通常无权访问您映射的网络驱动器域用户。

net use X: \\server\share\kaceInstaller password /user:DOMAIN\user
call X:\kaceinstall3.bat
net use X: /d

DOMAIN\user 设为只能访问\\server\share 且无其他权限的专用帐户,以最大程度地降低风险。

请注意,您必须确保任务运行的脚本不能被普通用户写入,否则他们只需修改脚本即可以管理员权限运行任意命令。 p>

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多