在 foreach 语句 powershell 中使用数组
using array within foreach statement powershell
我有一个包含文件夹的数组
我需要 运行 每个文件夹的应用程序命令,所以我使用 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:
启动进程 -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand /path/Folder2'
对于文件夹 3:
启动进程 -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand /path/Folder3'
对于文件夹 4:
启动进程 -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
}
我知道这是一种胶带解决方案,但最终它起作用了。感谢好心人的投入!
我不确定我是否答对了你的问题。
但是这样试试:
$folders=Get-ChildItem C:\AppFolder
foreach ($folder in $folders) {
Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList "-appcommand $($Folder.FullName)"
}
编辑:
我设法使用新的组合变量解决了这个问题,然后 运行 使用 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
}
我知道这是一种胶带解决方案,但最终它起作用了。感谢好心人的投入!
我有一个包含文件夹的数组 我需要 运行 每个文件夹的应用程序命令,所以我使用 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: 启动进程 -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand /path/Folder2'
对于文件夹 3: 启动进程 -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand /path/Folder3'
对于文件夹 4: 启动进程 -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
}
我知道这是一种胶带解决方案,但最终它起作用了。感谢好心人的投入!
我不确定我是否答对了你的问题。
但是这样试试:
$folders=Get-ChildItem C:\AppFolder
foreach ($folder in $folders) {
Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList "-appcommand $($Folder.FullName)"
}
编辑: 我设法使用新的组合变量解决了这个问题,然后 运行 使用 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
}
我知道这是一种胶带解决方案,但最终它起作用了。感谢好心人的投入!