Используйте типы перечислений в PowerShell - PullRequest
0 голосов
/ 18 декабря 2018

Я немного новичок в powershell (ожидаемое начало сообщения :)).Я не смог найти ответ на свой вопрос здесь или где-то еще, поэтому кто-нибудь может мне помочь, пожалуйста?

Например, мы хотим использовать некоторые перечисления, объявленные в библиотеках .NET.Как мы используем это в .NET?Вроде как:

using System.Data.SqlClient;

public class Test {
   var x = SortOrder.Ascending;
}

Если мне нужно использовать его в powershell, как я понял, мне нужно написать что-то вроде:

$x = [System.Data.SqlClient.SortOrder]::Ascending

Итак, вопрос в том, возможно ли этов powershell использовать что-то вроде 'using', как в C #, чтобы сократить синтаксис до вида вроде: $sortOrder.Ascending или [SortOrder]::Ascending?

1 Ответ

0 голосов
/ 18 декабря 2018

Опция 1

Поместите тип перечисления в переменную:

$so = [System.Data.SqlClient.SortOrder]
$so::Ascending

Опция 2

СоздатьПользовательский тип ускорителя (только для текущего сеанса):

[PSObject].Assembly.GetType("System.Management.Automation.TypeAccelerators")::Add("so", "System.Data.SqlClient.SortOrder")
[so]::Ascending

Опция 3 (PSv5 +)

Представлено в PowerShell v5.Поместите , используя в ваш $profile:

using namespace System.Data.SqlClient

# in your script:
[SortOrder]::Ascending

Опция 4

Используйте строку.В большинстве сценариев (когда целевой тип известен, например, для вызовов методов, назначений свойств и т. Д.) Он будет распознаваться и преобразовываться автоматически.

Например, если у вас есть этот тип:

using System.Data.SqlClient;

namespace Example
{
    public class MyClient
    {
       public SortOrder SortOrder { get; set; }
    }
}

Вы можете просто сделать это:

$myClient = New-Object Example.MyClient
$myClient.SortOrder = "Ascending"

Или также для явно типизированных переменных:

[System.Data.SqlClient.SortOrder]$sortOrder = "Ascending"

Он чувствителен к регистру и даже принимает частичный ввод, если он однозначен:

[System.Data.SqlClient.SortOrder]$sortOrder = "asc"
...