从Powershell执行文件而不会得到“你想运行这个文件吗?”对话

时间:2010-12-01 05:49:11

标签: powershell

我正在循环目录中的.exe文件并解压缩.msp文件 理想情况下它会默默发生。


此批处理文件命令工作正常。

for %%g in ("C:\test\"*.exe) do %%g /quiet /extract:"C:\test"


这个powershell脚本几乎完成了它。

$exeFiles = Get-ChildItem -path $directory -recurse -include *.exe
foreach($file in $exeFiles) 
{ 
    $appArgs = '/quiet /extract:"' + $directory + '"'
    Start-Process $exeFiles $appArgs -PassThru | Wait-Process
}


但是,Windows 7会抛出“你想运行这个文件吗?”对话框。
如何让powershell真正保持沉默?

2 个答案:

答案 0 :(得分:0)

不确定这是否是您的问题,但您在$ exeFiles变量上调用Start-Process而不是

for ($file in $exeFiles)
{
    start-process $file (...etc)
}

你也将args作为字符串传递,所以我怀疑他们没有通过exe。如果你将参数传递给start-process,它们必须是数组的形式,数组中每个元素一个字符串。不仅如此,而且powershell使用$ args并且它似乎是不可变的,因此您需要一个不同的变量名称:

所以你的代码应该更像这样:

$directory = "C:\test"
$exeFiles = Get-ChildItem -path $directory -recurse -include *.exe
foreach($file in $exefiles) 
{ 
    $myArgs = '/quiet', ('/extract:"' + $directory + '"')
    Start-Process $file $myArgs -PassThru | Wait-Process
}

答案 1 :(得分:0)

您遇到的问题是机器与获取文件的资源之间的信任关系。如果两台计算机属于同一个域,则不应该进入此对话框。 如果他们不在域(即intrernet或外联网),请转到:控制面板 - >互联网选项 - >安全 - >本地内联网 - >网站  单击“添加”,键入您要信任的资源

文件://servername.domainname

单击“确定”,然后重试。 我个人试图通过WMI这样做,任何人都知道怎么做?