热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用等于命令在powershell中创建foreach循环

如何解决《如何使用等于命令在powershell中创建foreach循环》经验,为你挑选了1个好方法。

我开始学习PowerShell并且一直在尝试创建一个foreach循环,这样如果其中一个JSON项的状态不是STARTED,它就会使用其名称作为可执行命令中的变量来运行命令.这是我的json txt文件的样子;

{
  "UNIT": {
    "name": "AB",
    "address": "fadasdaer",
    "status": "MIA"
  },
  "UNIT": {
    "name": "CD",
    "address": "fadasdahsfaaer",
    "status": "STARTED"
  },
    "UNIT": {
    "name": "EF",
    "address": "9afahegt",
    "status": "DEAD"
  }
}

我想要做的就是从我这里读取json.txt并运行foreach循环并执行命令,其中名称包含在命令中.我目前有这样的东西,但我的PowerShell理解是有限的,它不起作用......

$JSON = json.txt
$check = $JSON | ConvertFrom-Json
$started=STARTED

foreach($unit in $check.unit){
    if ($unit.status -notmatch $started) {
    $name=$unit.name
    executable.exe start $name
    }

}

任何指导将不胜感激.



1> mklement0..:

您的主要问题是您的JSON格式不正确:它定义了一个对象,然后多次定义其UNIT属性.

您应该将其定义为数组:请注意封闭的顶级[...]和缺少UNIT属性:

[
  {
    "name": "AB",
    "address": "fadasdaer",
    "status": "MIA"
  },
  {
    "name": "CD",
    "address": "fadasdahsfaaer",
    "status": "STARTED"
  },
  {
    "name": "EF",
    "address": "9afahegt",
    "status": "DEAD"
  }
]

同时更正了JSON输入和其他语法问题:

$JSON = 'json.txt'
$check = Get-Content -Raw $JSON | ConvertFrom-Json
$started = 'STARTED'

foreach ($unit in $check) {
  if ($unit.status -notmatch $started) {
    $name = $unit.name
    executable.exe start $name
  } 
}

如果您无法在源处修复JSON,则可以在将其传递给之前自行转换ConvertFrom-Json:

$check = (Get-Content -Raw $JSON) `
  -replace '\A\{', '[' `
  -replace '\}\Z', ']' `
  -replace '"UNIT": ' | ConvertFrom-JSON


推荐阅读
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • PHP引用的概念和用法详解
    本文详细介绍了PHP中引用的概念和用法。引用是指不同的变量名访问同一个变量内容,类似于Unix文件系统中的hardlink。文章从引用的定义、作用、语法和注意事项等方面进行了解释和示例。同时还介绍了对未定义变量使用引用的情况,以及在函数和new运算符中使用引用的注意事项。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkp ... [详细]
author-avatar
敏--MM
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有