我在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模块,它由一堆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中添加它吗?
我的 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)
但有相同的结果。
我有一个从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#中编写一个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".
我有一个功能
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一起使用.
这可能吗?
c# ×5
json ×3
json.net ×2
powershell ×2
function ×1
linq ×1
parameters ×1
pscmdlet ×1
remarks ×1