我正在循环目录中的.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真正保持沉默?
答案 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这样做,任何人都知道怎么做?