给定一个标准的json字符串值:
$jsonString = '{ "baz": "quuz", "cow": [ "moo", "cud" ], "foo": "bar" }'
Run Code Online (Sandbox Code Playgroud)
如何才能让这一切变得非常漂亮,最好不要使用暴力正则表达式?
到目前为止我发现的最简单的方法是:
$jsonString | ConvertFrom-Json | ConvertTo-Json
Run Code Online (Sandbox Code Playgroud)
然而,这似乎有点傻.
在PowerShell v2中,以下行:
1..3| foreach { Write-Host "Value : $_"; $_ }| select -First 1
Run Code Online (Sandbox Code Playgroud)
会显示:
Value : 1
1
Value : 2
Value : 3
Run Code Online (Sandbox Code Playgroud)
因为所有元素都被推下了管道.但是,在v3中,上面的行仅显示:
Value : 1
1
Run Code Online (Sandbox Code Playgroud)
管道在2和3发送之前停止Foreach-Object
(注意:-Wait
开关Select-Object
允许所有元素到达foreach
块).
如何Select-Object
停止管道,我现在可以从一个foreach
或从我自己的函数中停止管道?
编辑:我知道我可以在do ... while循环中包装一个管道并继续管道.我还发现在v3中我可以做这样的事情(它在v2中不起作用):
function Start-Enumerate ($array) {
do{ $array } while($false)
}
Start-Enumerate (1..3)| foreach {if($_ -ge 2){break};$_}; 'V2 Will Not Get Here'
Run Code Online (Sandbox Code Playgroud)
但是Select-Object
不需要这些技术中的任何一种,所以我希望有一种方法可以从管道中的单个点停止管道.
我已经开始使用版本控制来更好地管理我的PowerShell代码的修订版.我决定使用Mercurial有三个主要原因:
Mercurial适用于版本化PowerShell模块,因为每个模块都包含在自己的目录中.但是,我有一些不属于模块的脚本,但我仍然希望对它们进行版本控制.这些脚本位于添加的".\ Scripts"目录中,$env:PATH
因此我可以从命令行轻松运行它们.由于这些脚本并不真正相互关联,因此为Scripts目录创建单个存储库没有多大意义.
我该如何编写单个脚本?
我想到了以下几种选择:
有没有更好的处理单个文件版本的工具?使用Mercurial版本化单个文件有更好的方法吗?还有其他想法吗?
到目前为止,我已经成功安装了ejabberd并注册了两个用户进行一对一的聊天.在客户端我使用了strophe并且正常工作与一对一聊天.现在我正在进行多用户聊天,并且必须创建有限用户的聊天室才能访问这个房间.创建MUC的程序是什么?是否有任何命令行界面,如"注册用户名主机名密码",如创建用户.
请帮助我,因为没有适当的ejabberd文档,请建议任何有关创建多用户聊天的好教程.
我需要对excel电子表格进行排序,将一列列为升序数,以便1,2,3,4,5 ......
有没有人知道在PowerShell中对excel列进行排序的快速而肮脏的方法?