2015-12-02 51 views
1

我有一个用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 

UPDATE:

感谢@ user2460798,这似乎解决的凭据问题。下面是我运行到现在...

New-PSDrive -Name K -PSProvider FileSystem -Root \\servername\folder -Credential $creds 
Start-Process -FilePath "$netinstall1" -Wait 

$netinstall1是用户将在文本框中在这种情况下推杆,\\servername\folder\setup.exe完整的UNC路径。

如何去掉\setup.exe或路径的最后部分,我可以事先将驱动器映射到\\servername\folder。那有意义吗?

+1

我认为问题在于'$ creds'既用于登录文件共享,也用于启动进程。就我而言,无论如何,文件共享与本地Windows机器没有相同的凭据。即使我使用驱动器盘符,我仍然有问题。由于使用驱动器盘符从文件共享中运行对您来说确实有效,因此您应该将其分成两步:1)映射驱动器2)运行安装程序。您可以使用'new-psdrive'来映射驱动器。您可以使用'get-psdrive'的输出来查找可用的驱动器号。 –

回答

0

得到它的工作:

$path = Split-Path -Path $netinstall1 -Parent 
new-psdrive -name K -psprovider FileSystem -root "$path" -credential $creds 
Start-Process -FilePath "$netinstall1" -wait 

谢谢!