【发布时间】:2017-09-18 12:14:04
【问题描述】:
在某些情况下管理员不想将 C# 写入 PowerShell 脚本吗?
例如,我喜欢通过 xml 控制文件配置我的 PowerShell 脚本。但是基于这些控制文件创建任务是令人生畏的,因为很难在 PowerShell 中创建能够保存我喜欢的数据结构的健壮对象。有如下方法:
$myObject = New-Object -TypeName PSObject
但我发现我经常希望我可以将数组、哈希表等保存在这些对象中。最简单的方法是创建一个 C# 构造函数——因为我不知道如何将哈希表保存在 PSObject 属性中。
Add-Type -Language CSharp @"
public class myObject{
public String myString;
public hashtable myHash;
}
1.) 出于这个原因,在 PowerShell 中通常使用 C# 是否可以?这是在 PSv5 出现并引入 Class 构造之前每个人都在做的事情吗?
2.) 是否需要进行额外的维护以维护 C# 代码?
例如)我从服务器 2012 升级到 2016 - 保留 powershell 脚本。我知道 powershell 是向前兼容的,但是 C# 呢?
【问题讨论】:
-
一般来说,在 PowerShell 中工作时,我认为内联 C# 仅应作为最后的手段,如果没有其他明智的方法可以实现预期目标。
-
@JeffZeitlin 你能解释一下你为什么采取这种立场吗?
-
我认为这没有任何问题。我使用将 XAML 用于 UI 的 PS 脚本来执行此操作。保持清洁即可。
-
抱歉,无法理解您的想法。在 PS 5.0 中,您可以构建自己的类。只需搜索 PowerShell 类。
-
@autosvet 我知道 PS5 很棒,但我的问题是关于 PS3 和更早版本的(见标签,我特别提到“在 PSv5 出现之前”
标签: c# powershell powershell-3.0