Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Powershell执行文件而不获取;是否要运行此文件?";对话_Powershell - Fatal编程技术网

从Powershell执行文件而不获取;是否要运行此文件?";对话

从Powershell执行文件而不获取;是否要运行此文件?";对话,powershell,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) { $app

我正在目录中循环使用.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真正静音?

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

for ($file in $exeFiles)
{
    start-process $file (...etc)
}
您还将args作为字符串传递,因此我怀疑它们无法传递到exe。如果将参数传递给启动进程,则这些参数必须采用数组的形式,数组中每个元素一个字符串。不仅如此,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
}

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

for ($file in $exeFiles)
{
    start-process $file (...etc)
}
您还将args作为字符串传递,因此我怀疑它们无法传递到exe。如果将参数传递给启动进程,则这些参数必须采用数组的形式,数组中每个元素一个字符串。不仅如此,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
}

您遇到的问题是机器和从中获取文件的资源之间的信任关系。如果两台计算机属于同一个域,则不应出现此对话框。 如果它们不在域(即intrernet或extranet)中,请转到:控制面板->Internet选项->安全->本地Intranet->站点 单击“添加”,键入您要信任的资源

file://servername.domainname

单击“确定”,然后重试。
就我个人而言,我正试图通过WMI实现这一点,有人知道怎么做吗?

您遇到的问题是机器和从中获取文件的资源之间的信任关系。如果两台计算机属于同一个域,则不应出现此对话框。 如果它们不在域(即intrernet或extranet)中,请转到:控制面板->Internet选项->安全->本地Intranet->站点 单击“添加”,键入您要信任的资源

file://servername.domainname

单击“确定”,然后重试。
就我个人而言,我正试图通过WMI实现这一点,有人知道吗?

嗨,卡拉维拉。谢谢你的回复。在试图简化问题代码时,变量名是拼写错误。他们已经修好了。谢谢至于将参数作为字符串传递,它实际上工作得很好。我认为我遇到的问题是在试图提取网络驱动器上的文件时存在安全问题。现在再进一步调查一下,嗨,卡拉维拉。谢谢你的回复。在试图简化问题代码时,变量名是拼写错误。他们已经修好了。谢谢至于将参数作为字符串传递,它实际上工作得很好。我认为我遇到的问题是在试图提取网络驱动器上的文件时存在安全问题。现在进一步调查。