powershell的一个小游戏,看看能写几种方式出来
2015-09-09 06:56
771 查看
今天在powershell.org看见了这个月的小测试,要求很简单,给出一个csv文件,里面有一列叫做machinename,都是计算机的名字,所有的计算机都可以远程执行powershell 2.0以上的版本,读取这个文本,然后输出一个新的csv文件,包括两列,machinename和osversion
http://powershell.org/wp/2015/09/05/september-2015-scripting-games-puzzle/
豆子想了想,大概写了4种方式都可以做到这一点。
第一种方式最复杂,简单的说就是创建一个空的哈希表,转换成对象,然后创建一个空的数组,循环把对应的值放进数组里面
第二张方式是在第一个方式的改进,不用直接创建新的,直接在当前的对象里面添加一个新的成员属性, 注意-passthru的使用,可以直接显示出来
第三种就是直接使用get-wmiobject了,powershell 3以后的可以用get-ciminstance,这个命令支持管道,但是考虑到2.0的版本限制,所以还是使用的get-wmiobject
第四种方式和第三种基本一样,但是在最老的powershell脚本里面很常见,-expandproperty把一个对象转换成字符串,这样才能传递出去
最后还写了一个,如果可以直接访问AD的话,可以从AD里面获取相关计算机的信息
虽然是很简单的练习,但是通过不同的方式都可以实现。
本文出自 “麻婆豆腐” 博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1692962
http://powershell.org/wp/2015/09/05/september-2015-scripting-games-puzzle/
豆子想了想,大概写了4种方式都可以做到这一点。
第一种方式最复杂,简单的说就是创建一个空的哈希表,转换成对象,然后创建一个空的数组,循环把对应的值放进数组里面
$pp=$null $pp=@{'name'=$null;'os'=$null} $obj=New-Object -TypeName psobject -Property $pp $result=@() Import-CSV c:\temp\import.csv | Foreach-Object { $objtemp=$obj | select * $objtemp.name=$_.machinename $objtemp.os=(Get-WmiObject -Class win32_operatingsystem -ComputerName $_.machinename).caption $result+=$objtemp } $result
第二张方式是在第一个方式的改进,不用直接创建新的,直接在当前的对象里面添加一个新的成员属性, 注意-passthru的使用,可以直接显示出来
Import-CSV C:\temp\import.csv | Foreach-Object { $_ | Add-Member -PassThru -MemberType NoteProperty -Name OSVERSION -Value ((Get-wmiobject -ClassName Win32_OperatingSystem -ComputerName $_.MACHINENAME).Caption) }
第三种就是直接使用get-wmiobject了,powershell 3以后的可以用get-ciminstance,这个命令支持管道,但是考虑到2.0的版本限制,所以还是使用的get-wmiobject
Get-WmiObject -ComputerName (import-csv C:\temp\import.csv).machinename -ClassName win32_operatingsystem | select @{n=“MachineName";e={$_.pscomputername}}, @{n="OSVersion";e={$_.caption}}
第四种方式和第三种基本一样,但是在最老的powershell脚本里面很常见,-expandproperty把一个对象转换成字符串,这样才能传递出去
Get-WmiObject -ComputerName (import-csv C:\temp\import.csv | select -ExpandProperty machinename) -ClassName win32_operatingsystem | select @{n=“MachineName";e={$_.pscomputername}}, @{n="OSVersion";e={$_.caption}}
最后还写了一个,如果可以直接访问AD的话,可以从AD里面获取相关计算机的信息
import-csv C:\temp\import.csv | ForEach-Object {Get-ADComputer $_.machinename -Properties operatingsystem | select @{n="MachineName";e={$_.name}},operatingsystem}
虽然是很简单的练习,但是通过不同的方式都可以实现。
本文出自 “麻婆豆腐” 博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1692962
相关文章推荐
- 一个二维数组以顺时针螺旋的方式打印出来
- [Web前端]几种方式可以隐藏一个元素
- [本课] 请你在网络上使用一个信息平台,找到一本名字为《傲慢与偏见》的书。把你的网站和查找方式写出来。
- 一个技术小白整理出来的for循环使用几种方法~~
- 转发一个小游戏:看看自己像哪位名人?
- vue遇到一个坑一下午没爬出来 请大神看看
- 编写一个程序,要求接收一个数字,程序会将这个数字以二进制方式打印,例如:数字10 , 以1010的方式打印出来
- 练习 1- 10 编写一个将输入复制到输出的程序,并将其中的制表符替换成 \t,把回退符替换成\b,把反斜杠替换为\\。 这样就可以将制表符和退格符以可见的方式显示出来。
- 目前开发手机app的几种方式?怎么判断一个APP是原生APP、混合APP还是WEB APP ?
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- 浅谈增强一个Java类中的某个方法的几种方式
- GDI画图的几种方式(小游戏不闪烁)
- GDI画图的几种方式(小游戏不闪烁)
- GDI画图的几种方式(小游戏不闪烁)
- 一个应用中启动另一个应用的几种方式
- hdu 1028 母函数 一个数有几种相加方式
- 隐藏一个元素的几种方式
- JBoss 7 里一个EJB依赖其他jar的几种方式
- 最近一个刚刚毕业的朋友说,他面试时候,遇到最频繁的css问题就是垂直居中,这里给出几种垂直居中方式!
- 练习1-10 编写一个将输入复制到输出的的程序,并将其中的制表符替换成\t,把回退符替换成\b,把反斜杠\替换成\\,这样可以将制表符和回退符以可见的方式显示出来。