小编ano*_*opb的帖子

在Powershell中使用参数调用Invoke-Expression

我在c#中编写了一个powershell模块,它有一堆像cmd一样的cmdlet

添加-VM

cmdlet可以访问API并将数据拉回.

但为了与产品的ssh CLI保持一致,我编写了一个名为newtask的函数,它接受'addvm'作为参数和$ args.

例如

newtask addvm -id 12345
Run Code Online (Sandbox Code Playgroud)

然后我调用Add-VM并将$ args作为字符串传递

Invoke-Expression Add-VM $argstr
Run Code Online (Sandbox Code Playgroud)

问题是Add-VM抛出一个错误,它无法找到接受参数System.Object []的位置参数

找不到接受参数'System.Object []'的位置参数

虽然我可以轻松地将"addvm"别名为"Add-VM",但我正在尝试使用ssh CLI保持一致性,以便新用户可以快速开始使用此模块.

我认为发送像'-id 12345'这样的字符串就足够了,但事实并非如此.pscmdlet是否希望收到其他内容?

提前致谢.

c# powershell command-line-arguments

8
推荐指数
2
解决办法
1万
查看次数

如何为pscmdlet类设置帮助信息

我在c#中编写了一个powershell模块,它由一堆PowerShell cmdlet组成.

例如:

得到应用

当我宣布上课时

[Cmdlet(VerbsCommon.Get, "Application")]
    public class GetApplication : PSCmdlet
Run Code Online (Sandbox Code Playgroud)

我可以执行诸如为此cmdlet提供参数以及有关参数本身的有用消息之类的操作.

我正在尝试在我的类中提供更多文档,以便命令如此

get-help get-application

将在REMARKS部分中提供有关cmdlet本身的说明.

知道如何在visual studio 2013中添加它吗?

c# remarks pscmdlet

7
推荐指数
0
解决办法
133
查看次数

在 C# 中访问 json.net jarray 中的项目

我的 API 返回

{
  "result": [
    {
      "id": "51473",
      "name": "serv-vc",
      "modifydate": "2014-10-09 18:29:48.033",
      "expirationoff": "false",
      "createdate": "",
      "scheduleoff": "false",
    }
  ],
  "status": 0
}
Run Code Online (Sandbox Code Playgroud)

我将其存储为 JObject reponseobj

我无法弄清楚如何访问responseobj["result"][0]["id"].

每次我尝试这样做时,它都会给出一个关于越界的数组。

我缺少什么?

我也尝试过

JArray resultarr = (JArray)responseobj.SelectToken("result");
resultarr[0]["id"] 
Run Code Online (Sandbox Code Playgroud)

但有相同的结果。

c# json json.net

5
推荐指数
1
解决办法
2万
查看次数

有没有办法从某种类型的JSON.NET JObject中删除节点?

我有一个从API返回的JSON对象,有些节点是数组.有没有办法让我完全根据"类型"将这些物体拉出物体?

例如:

{ "result" : {
"field1": "value1",
"field2" : [ "val2", "val3" ],
"field3" : "val4",
"field4" : "val5" }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够删除"field2",因为它是一个数组.

我不知道如何以一种给我对象类型的方式遍历对象.

我正在使用C#和JSON.NET 6.0.5

谢谢!

c# json json.net

3
推荐指数
1
解决办法
2万
查看次数

如何判断JSON结果是否有对象或数组?

对不起,伙计们.我很擅长编写代码......

我正在c#中编写一个powershell cmdlet,它会扩展到API并获取JSON作为响应.

根据我对API的调用,返回JSON数组或单个JSON对象

某些,它可以

{"result": [
{
"id": "24095",
"hostid": "24094",
"name": "host1.fqdn.com",
"clustered": "false",
"type": "VM",
"ipaddress" : "192.168.1.184"
},
{
"id": "24097",
"hostid": "24096",
"name": "host2.fqdn.com",
"clustered": "true",
"type": "VM",
"ipaddress" : "192.168.1.185"
}
]
}
Run Code Online (Sandbox Code Playgroud)

有时它可以

{"result": {
"id": "24095",
"hostid": "24094",
"name": "host1.fqdn.com",
"clustered": "false",
"type": "VM",
"ipaddress" : "192.168.1.184"
}
}
Run Code Online (Sandbox Code Playgroud)

我正在试图弄清楚如何使用JSON.NET,我可以弄清楚返回的json是否有"result"对象或"result"数组.

根据检查,我想调用一种以CSV格式打印出对象或数组的方法

我希望编写一个通用方法,将所有键打印为CSV标头,将值打印为CSV行.

但我遇到的第一件事就是弄清楚我的JSON对象是有一个数组还是只有一个对象

我试过了

JObject jsonres = JObject.Parse(strResponse);
JObject appobj = (JObject)jsonres.SelectToken("result");

Console.WriteLine(appobj.Type.ToString());
Run Code Online (Sandbox Code Playgroud)

结果是

无法将类型为"Newtonsoft.Json.Linq.JArray"的对象强制转换为"Newtonsoft.Json.Linq.JObject".

当appobj ["result"]是一个数组并且工作得很好并且当appobj ["result"]是单个对象时打印"Object".

c# linq json

2
推荐指数
1
解决办法
4685
查看次数

如何在powershell函数中使用c#switch参数?

我有一个功能

getinfo([string]$subcommand, [string]$argument)
Run Code Online (Sandbox Code Playgroud)

我想做的是让参数值为'-h'或'-help'

getinfo hosts -h
Run Code Online (Sandbox Code Playgroud)

将为子命令'hosts'提供帮助文本.不幸的是,当我指定-h时,我认为它不会将"-h"的值赋给$参数,而是创建一个新参数.

我正在考虑使用switch参数,但我不确定我是否可以在函数中使用它与上面的$ argument一起使用.

这可能吗?

parameters powershell function

0
推荐指数
1
解决办法
489
查看次数