2017-04-05 55 views
0
msiexec /i "example.msi" /q UserName="my username" password="my password" 

上述命令在命令行中完美执行,但我需要在powershell中单行执行。 所以任何人都请建议。 我是新来的PowerShell。如何在从服务器到远程客户端的单行中的powershell中执行以下命令

我曾尝试以下之一:

Start-Process -FilePath msiexec -ArgumentList//i, example.msi, "UserName='my username'","password='my password" -Wait 

,但它显示了一些问题:

Start-Process : A positional parameter cannot be found that accepts argument 'System.Object[]'. 
At line:1 char:1 
+ Start-Process -FilePath msiexec -ArgumentList//i, "'example.msi ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Start-Process], ParameterBindingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand 
+0

嗨,你得到了什么错误? – sodawillow

+0

@karthik请使用[编辑](http://stackoverflow.com/posts/43232159/edit)链接 –

+0

向您的问题添加任何澄清信息嗨,我编辑了我的消息正文。 – karthik

回答

1

你几乎得到了它,试试这个:

start msiexec -ArgumentList 
    "/i example.msi /q UserName=""my username"" password=""my password""" 

如果有任何的你的论点需要引号,你需要把它们加倍。

+0

嗨@Balic C:它工作正常,也请建议如何运行此msi到客户端系统。 – karthik

+0

很酷,你可以使用Joseph的方法,即'Invoke-Command',或者你可以使用'psexec',我已经取得了很多成功。 –

+0

我已经使用invoke-command但输出显示没有任何Invoke-Command -ComputerName $ computer -ScriptBlock {msiexec/i“\\ servername \ pathToFile \ example.msi”/ q UserName =“我的用户名”password =“我的密码“} – karthik

0

尝试使用“Invoke-Command”cmdlet。应该看起来像这样:

$computerlist = get-content c:\temp\ComputerNames.txt 
foreach ($computer in $computerlist) { 
    Invoke-Command -ComputerName $computer -ScriptBlock {msiexec /i "\\servername\pathToFile\example.msi" /q UserName="my username" password="my password"} 
} 

尝试查看此命令的帮助。

+0

谢谢你正在工作我还有一个疑问我想从服务器运行msi在客户端系统中执行。 – karthik

+0

@karthik只需提供确切的UNC路径* .msi。 – Vesper

+0

但服务器如何找到哪个客户端必须运行*。msi – karthik

0

一般来说,当你看到的参数,例如参数argumentslist始终牢记一个数组的预期。 “&路径参数”格式相同。

有关数组的很酷的事情是,每个项目都会提供给可执行文件,就好像它是隐式引用的,类似于在引号中包含带引号的命令提示符中包含空格的参数。

出于这个原因,我总是用结构像

[email protected]($var1,$var2) 

喜欢我从来不担心什么是变量。在多行创建数组时,根据每种情况,还可以使更改管理变得更加容易,因为添加参数是行更改。它还与评论一出故障排除

当例如

帮助
[email protected](
    $var1 
    $injectedVar 
    #$disabled 
    $var2 
) 
相关问题