我对Powershell有点陌生(预计消息开始:)。 我在这里或其他地方找不到我的问题的答案,所以有人可以帮我吗?
例如,我们要使用.NET库中声明的一些枚举。我们如何在.NET中使用它?有点像:
using System.Data.SqlClient;
public class Test {
var x = SortOrder.Ascending;
}
如果我需要在powershell中使用它,据我了解,我需要编写如下内容:
$x = [System.Data.SqlClient.SortOrder]::Ascending
因此,问题是,在Powershell中是否可以使用C#中的“ using”之类的语法来简化语法,例如:$sortOrder.Ascending
或[SortOrder]::Ascending
?
答案 0 :(得分:4)
选项1
将枚举类型放入变量:
$so = [System.Data.SqlClient.SortOrder]
$so::Ascending
选项2
创建自定义type accelerator(仅适用于当前会话):
[PSObject].Assembly.GetType("System.Management.Automation.TypeAccelerators")::Add("so", "System.Data.SqlClient.SortOrder")
[so]::Ascending
选项3 (PSv5 +)
在PowerShell v5中引入。将using放入您的$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"