首页 > 解决方案 > 在 foreach UNIQUE 中创建“cmd /c”命令

问题描述

我有一个脚本,它运行一个命令来启动一个名为 Process.ps1 的 PowerShell 脚本来处理表中的一些多维数据集。

$Table = Query "SELECT * from [dbo].[$cubeTable] WHERE [application] = '$App_input' ORDER BY [sequence]"

$i=0
$CUBE = @()

foreach($row in $Table)
{   
    Write-Host "`r`n---------------------------START of Script-----------------------------"
    Write-Host "`r`n [Application] :  $App_input"
    Write-Host " [Script]      :  $Script"
    $i++
    $CUBE = $row.Item("cube_name")
    $CUBE = $CUBE | Select-Object -Unique
    #Write-Host " > CUBE $($i): $($CUBE[-1])`n"
    cmd /c "runPowerShell.bat $Script $($CUBE)"    #where $Script is Process.ps1 script that processes on each CUBE selected from table in order
}

出于某种原因,它在同一个多维数据集上运行了两次处理。

如何在cmd /c "runPowerShell.bat $Script $($CUBE)"命令中添加“唯一”方面,以便如果$CUBE再次传回相同的内容,它会忽略它并循环处理下一个不同的多维数据集?

有一个Select-Object -Unique对象,而不是命令......

标签: powershell

解决方案


我想到了。

我修改了我的查询语句:

$Table = Query "SELECT DISTINCT[cube_name], [sequence] from [dbo].[$cubeTable] WHERE [application] = '$App_input' ORDER BY [sequence]"

它现在只存储一个不同的多维数据集,因此cmd /c "runPowerShell.bat $Script $($CUBE)"只运行该多维数据集一次


推荐阅读