【发布时间】:2019-03-14 11:41:51
【问题描述】:
我有一个包含文件夹的数组 我需要为每个文件夹在应用程序上运行一个命令,所以我正在使用 foreach 命令。 但是在参数列表中,我需要分别指定每个文件夹的路径,所以假设我有 4 个文件夹(Folder1、Folder2、Folder3、Folder4),并且在 foreach 脚本块中我需要使用包含多个应用程序命令的 -Argumentlist 启动进程和文件夹的名称。分别对每个文件夹执行相同的操作。
我遇到的问题是为每个文件夹运行 ArgumentList,其中每个文件夹具有来自同一数组的不同文件夹。我一直在努力澄清,但如果这还不够理解,请告诉我。
我一直想弄清楚,这些几乎就是我的笔记:
$folders=Get-ChildItem C:\AppFolder
$argum="-appcommand /path/$folders"
foreach ($folder in $folders) {
Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList $argum
}
我不能为每个文件夹单独写一行,因为这些在每台计算机上都会有所不同,我需要一个完全自动化的解决方案。
我知道这很令人困惑,所以我将尝试逐步重写我想要实现的目标。我需要自动化这个:
对于存储在 $folders=Folder1,Folder2,Folder3,Folder4 中的每个文件夹
对于文件夹 1: 开始进程 -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand /path/Folder1' (注意:-appcommand /path/ 是一个常量)
对于文件夹 2: Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand /path/Folder2'
对于文件夹 3: Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand /path/Folder3'
对于文件夹 4: Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand /path/Folder4'
编辑: 我已经设法使用新的组合变量来解决这个问题,然后使用 Invoke-Expression 运行它们。简而言之,以下是我所做的。
$items=Get-ChildItem C:\AppFolder -Directory | select -ExpandProperty Name
$argum="Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand ""/Path/"
foreach ($item in $items) {
$Tasks=$argum+$item+"""'"
Invoke-Expression $Tasks
}
我知道这是一种胶带解决方案,但最终它可以工作。感谢好心人的投入!
【问题讨论】:
标签: arrays powershell start-process