【发布时间】:2015-12-03 14:50:29
【问题描述】:
我有一个使用 powershell 构建的 GUI 工具,可以帮助设置新 PC。我正在尝试通过将安装文件的路径放入文本框中来添加用户从域网络共享安装软件的能力。当他们单击“运行”时,它会转到该路径并运行设置。
只要我有权访问该共享,我就可以让它工作,但是我想在Start-Process 命令中包含凭据。截至目前,每当我尝试它时,它都会显示错误的用户名或密码。
域、用户和传递变量来自将 PC 连接到域的工具的另一部分。这将在网络安装开始之前首先发生。前两行适用于域加入,但不适用于网络安装。
$pass = ConvertTo-SecureString "$pass" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential $domain\$user,$pass
Start-Process -FilePath "$netinstall1" -Credential $creds -wait
更新:
感谢@user2460798,这似乎解决了凭据问题。这就是我现在遇到的...
New-PSDrive -Name K -PSProvider FileSystem -Root \\servername\folder -Credential $creds
Start-Process -FilePath "$netinstall1" -Wait
$netinstall1 是用户将在文本框中输入的完整 UNC 路径,在本例中为 \\servername\folder\setup.exe。
如何去除\setup.exe 或路径的最后一部分,以便我可以事先将驱动器映射到\\servername\folder。这有意义吗?
【问题讨论】:
-
我认为问题在于
$creds既用于登录文件共享又用于启动进程。在我的情况下,无论如何,文件共享没有与本地 Windows 机器相同的凭据。即使我使用驱动器号,我仍然有问题。由于从带有驱动器号的文件共享运行确实对您有用,因此您似乎应该将其分为两个步骤:1)映射驱动器 2)运行安装程序。您可以使用new-psdrive映射驱动器。您可以使用get-psdrive的输出来查找可用的驱动器号。