Visual studio 对Get Migrations的输出进行升序排序?

Visual studio 对Get Migrations的输出进行升序排序?,visual-studio,entity-framework,powershell,entity-framework-6,Visual Studio,Entity Framework,Powershell,Entity Framework 6,默认情况下,在Visual Studio软件包管理器控制台中运行该命令时,将按降序返回已应用于目标数据库的实体框架迁移列表。也就是说,列表被排序为首先有最新的迁移 有没有办法让Get Migrations按升序返回迁移列表,即先返回最早的迁移? 到目前为止,我所尝试的: 通过管道将输出传输到cmdlet,例如,Get Migrations[my params]| Sort Object-Property Name(我不确定要指定什么属性名称,或者这是否适用?)。所有这些尝试都以静默方式失败(没

默认情况下,在Visual Studio软件包管理器控制台中运行该命令时,将按降序返回已应用于目标数据库的实体框架迁移列表。也就是说,列表被排序为首先有最新的迁移

有没有办法让Get Migrations按升序返回迁移列表,即先返回最早的迁移?

到目前为止,我所尝试的:

  • 通过管道将输出传输到cmdlet,例如,
    Get Migrations[my params]| Sort Object-Property Name
    (我不确定要指定什么属性名称,或者这是否适用?)。所有这些尝试都以静默方式失败(没有显示错误消息,Get Migrations输出中没有更改)

  • 查看了有关Get Migrations的Powershell帮助(
    Get-help Get Migrations
    ),并搜索了web以查看Get Migrations本身是否具有控制输出排序顺序的参数。找不到

当前获取的Get Migrations命令的输出:

PM> Get-Migrations [my arguments...]
Retrieving migrations that have been applied to the target database.
201704121534436_SomeMigration999
201703291334212_SomeMigration998
[lots and lots more records here that are a pain to scroll through...]
201410110448547_InitializeTables
201410110018266_InitialCreate

根据提供的示例输出,命令似乎返回文本

我会在换行符上拆分,然后在上拆分,以便将这两个属性分开,之后可以对内容进行排序:

#$migrations = Get-Migrations "..."

#test values
$migrations = "201704121534436_SomeMigration999
201703291334212_SomeMigration998
201410110448547_InitializeTables
201410110018266_InitialCreate"

$migrations.Split("`n") | ForEach-Object {
    New-Object -TypeName psobject -Property @{
        Date = $_.Split("_")[0]
        Name = $_.Split("_")[1]
    }
} | Sort-Object Name

嗨,你能提供一些你得到的未分类输出的样本吗?@sodawillow问得好,完成了!这是Microsoft提供的
cmdlet
吗?@sodawillow是。虽然我不是微软内部100%的确切来源,但我怀疑它是作为实体框架的一部分提供的:@sodawillow有很多活动部件需要设置,以便能够重新编程,所以我不会要求您尝试——这个问题更方便/“应该很容易”之类的东西,无论如何,没有什么关键任务。无论如何,我非常感谢你的帮助!:-)我喜欢这个主意!然而,由于我在PackageManager控制台中,我认为我需要作为一个单行程序来完成这项工作。对于初学者,我尝试了以下操作,但得到了一个“不能对空值表达式调用方法”错误:(Get Migrations[params])。拆分(“`n”)Get Migrations的输出会在错误发生之前打印出来。我想知道Get-Migrations cmdlet是否在运行时打印其输出,而不是以字符串形式返回输出。我可能不走运?如果命令的输出不能被“捕获”,我不知道如何继续。也许有一个参数可以指定输出文件?