Chr*_*ken 4 c# powershell hashtable
我试图将哈希表作为脚本参数从 C# 传递到 PowerShell,但未成功。当我在 PowerShell 中执行时,脚本和参数可以正常工作,所以我假设我的错误是在 C# 端。
在 C# 中,我只是像使用任何其他参数一样使用 Command.Parameters.Add()。我传递给脚本的所有其他参数都被正确接收,但哈希表为空。
从 C# 方面,我尝试使用 Hashtable 对象和 Dictionary<string, string> 对象,但似乎都不起作用。在这两种情况下,我都确认对象在传递给 PowerShell 之前已实例化并具有值。我觉得有一个非常明显的解决方案正盯着我看,但它只是没有点击。
使用此答案和Command.Parameters.Add( string, object )方法重载,我能够将哈希表传递给脚本。下面是测试代码:
string script = @"
param( $ht )
Write-Host $ht.Count
$ht.GetEnumerator() | foreach { Write-Host $_.Key '=' $_.Value }
";
Command command = new Command( script, isScript: true );
var hashtable = new Hashtable { { "a", "b" } };
command.Parameters.Add( "ht", hashtable );
Pipeline pipeline = runspace.CreatePipeline( );
pipeline.Commands.Add( command );
pipeline.Invoke( );
Run Code Online (Sandbox Code Playgroud)
它显示1from$ht.Count和a = bfrom 枚举哈希表值。
| 归档时间: |
|
| 查看次数: |
2447 次 |
| 最近记录: |