我正在开发一个项目,让基于 Windows 的机器运行预定的 powershell 脚本,该脚本将把主机状态作为 JSON 结构化数据文件发布。目标是让相同的脚本能够在任何 Windows 机器上运行,而无需为每个将放置脚本的服务器手动输入变量值,即主机名、IP 地址等。
$hn = hostname
$ip = ipconfig
echo $hn
echo $ip
$params = '{
"host": "$(hn)",
"service": "APP_NAME",
"annotation": "Service is looking dope!",
“ip": "$(ip)"
}'
Invoke-WebRequest -Uri http://yoursite.com:5550/ -Method POST -ContentType "application/json" -Body $params
#Invoke-RestMethod -Uri http://yoursite.com:5550/ -Method POST -ContentType "application/json" -Body $params
Run Code Online (Sandbox Code Playgroud)
我最终得到了以下输出的变化(注意主机名和 ip 变量保持不变):
HOSTNAME1
1.1.1.1
'{
"host": "$(hn)",
"service": "APP_NAME",
"annotation": "Service is looking dope!",
“ip": "$(ip)"
}'
Run Code Online (Sandbox Code Playgroud)
我希望输出如下所示:
HOSTNAME1
1.1.1.1
'{
"host": "HOSTNAME1",
"service": "APP_NAME",
"annotation": …
Run Code Online (Sandbox Code Playgroud) 我遇到的情况是我的数组的值是字母数字。
我想遍历它们,并打印出带有填充0的值。
当我有一个数组并正常遍历它们时,它可以正常工作:
acct = ["123425326AA", "234123412341234AA", "12342342CP", "12342314234", "5"]
acct.each { |acct| puts acct }
Output:
$ruby main.rb
123425326AA
234123412341234AA
12342342CP
12342314234
5
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用填充0时会遇到问题。我试着玩, %#d
但我不理解。例如,我试图%23d
在循环中使用23个“ 0”填充它。
我正在寻找的输出类型如下:
000000000000123425326AA
000000234123412341234AA
000000000000012342342CP
00000000000012342314234
00000000000000000000005
Run Code Online (Sandbox Code Playgroud)
我尝试使用此代码,它提到了一些有关整数的信息,并且我的数组值确实包含一些Alpha,但我不确定这是否是根本原因。但是这里有一些我尝试使用的代码示例。
acct.each { |i| puts "%23d" % i }
Output:
$ruby main.rb
main.rb:17:in `%': invalid value for Integer(): "123425326AA" (ArgumentError)
from main.rb:17:in `block in <main>'
from main.rb:17:in `each'
from main.rb:17:in `<main>'
Run Code Online (Sandbox Code Playgroud)
从这里开始,我尝试将数组顺序更改为以下顺序,并且部分起作用,并且能够处理仅是数字的值,但是一旦达到字母数字值,便会失败。另外,它也没有放置0,而是用X数量的空格代替。
acct = ["5", "12342314234", "234123412341234AA", "12342342CP", "123425326AA"]
acct.each { |acct| puts "%23d" …
Run Code Online (Sandbox Code Playgroud)