gpt4 book ai didi

c# - 何时在 PowerShell 脚本中使用 C#对象

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:55 26 4
gpt4 key购买 nike

在某些情况下,管理员是否希望避免将 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#。但是,我会尽量避免它,因为这会使您的脚本更难阅读和维护

在您的示例中,您可以编写一个函数来为您创建对象:

function New-MyObject
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true)]
[string]$myString,

[Parameter(Mandatory=$true)]
[hashtable]$myHash
)

[PSCustomObject]@{
MyString = $myString
MyHash = $myHash
}
}

关于c# - 何时在 PowerShell 脚本中使用 C#对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43543615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com