今天在写powershell脚本中犯的两个错误

可能是因为牙痛没睡好,今天老是犯错,还是脚本写错,特别难调。

第一个错误:

powershell脚本里面,函数与函数互相调用的传参。其实就像调用普通的cmdlet一样的写法,应该这么写:

Add-ScopeObject -adminAddr $adminAddr -name $newScope.Name -objectList $objectList

看我写成啥:

Add-ScopeObject($adminAddr, $newScope.Name, $objectList)

结果怎么都执行不对,我这个焦急啊。我就在Add-ScopeObject函数里面疯狂的打印参数:

    $adminAddr >> C:\Users\admin\Desktop\输出\adminAddr222.txt
    $name >> C:\Users\admin\Desktop\输出\name222.txt
    $objectList >> C:\Users\admin\Desktop\输出\objectList222.txt

结果第一个输出txt里面把所有的参数都打印出来,第二个和第三个txt文件什么也没有。然后我这个焦急。我就查应该怎么传参,什么@PSBoundParameters

这个玩意儿都看了看。后来忽然想起来,你妹,不就是像cmdlet一样传嘛,我以前还写过呢,靠,傻叉!

第二个错误:

第二个更逗比,我在powershell里写函数,本来我的命名与cmdlet不重合,结果脑子一段路,寻思人家命名多规范啊,我就把函数名改成人家的cmdlet名了,

然后里面还调用了这个cmdlet。这下热闹了啊,由于递归,我打印的参数快疯了,往下拉阿拉啊拉不到头,然后我仔细看我的代码,逻辑没错啊!!!我更暴躁了,

我上上厕所,吃吃水果,就突然发现,居然是这个问题。。。真是欲哭无泪啊,我这一天就这么暴躁地过去了!。。。头痛,心烦。。。

时间: 2024-10-23 18:54:30

今天在写powershell脚本中犯的两个错误的相关文章

技术分享:如何在PowerShell脚本中嵌入EXE文件

我在尝试解决一个问题,即在客户端攻击中只使用纯 PowerShell 脚本作为攻击负荷.使用 PowerShell 运行恶意代码具有很多优点,包括: 1.无需在目标上安装其他任何东西. 2.强大的引擎(例如可以直接调用 .NET 代码). 3.可以使用 base64 编码命令来混淆恶意命令,使恶意命令变的不容易被发现.这同样也是一种可以避免使用特殊字符的方法,尤其是在一个涉及多个步骤需要分离不同攻击负荷的高级攻击中. 4.可以使用Invoke-Expression将字符串解释为 Powershe

我在学习编程中犯的两个最大错误

我在学习编程中犯的两个最大错误 投递人 itwriter 发布于 2012-09-10 09:24 评论(13) 有2616人阅读  原文链接  [收藏]  « » 英文原文:Suneel Chakravorty 一年前,我刚从大学毕业并且决定踏入社会.我想出了很多初始的想法并将他们实现,但我不懂编程. 听从 Yipit 联合创始人 Vin Vacant 的建议之后,我开始自学编程. 现在我终于学了足够多的知识来自己实现产品原型,一路走来,非常坎坷.如果你在跟我同样的路上,我希望你能避免犯跟我同

脚本要求:两类机器一共300多台,写个脚本自动清理这两类机器里面的日志文件。

要求:两类机器一共300多台,写个脚本自动清理这两类机器里面的日志文件.在堡垒机批量发布,也要批量发布到crontab里面. A类机器日志存放路径很统一,B类机器日志存放路径需要用*匹配(因为这个目录里除了日志外,还有其他文件,不能删除.匹配的时候可用*.log) A类:/opt/cloud/log/   删除7天前的B类: /opt/cloud/instances/  删除15天前的 要求写在一个脚本里面.不用考虑堡垒机上的操作,只需要写出shell脚本. #!/bin/bash dir1=/

犯的两个错误

第一个错误 不懂得理解和宽容.为了所谓的奋斗,忘记身边的人,忘记身边的快乐.这是极其狭隘的.....人要学会宽容和感恩. 之所以痛苦和不快乐,这是主要的一个原因. 那么多人,为我们承受,这么一个感激的心是不能丢失的. 先辈们给了我们这么多,我们也要承受. 不再有偏见,不再悲观,选择欣赏,选择承担和承受. 选择乐观,选择感恩.选择爱,选择理解,选择担当,选择承受. 或许这就是人世间的血泪吧. 第二个错误 不坚持自己的自由. 由别人来评价自己是愚蠢的.是没有胆量的. 人啊,苦苦寻找寻找是为什么?苦苦

脚本中使用密文密码

将明文转换为密文 1 #将明文转换为密文 2 $storage = "d:\pass.txt" 3 $mysecret = 'mypassword.' 4 5 $mysecret | 6 ConvertTo-SecureString -AsPlainText -Force | 7 ConvertFrom-SecureString | 8 Out-File -FilePath $storage #将密文转换回明文 1 #将密文转换回明文 2 $storage = "d:\pas

PowerShell脚本传递参数

在编写PowerShell脚本的时候,可以通过给变量赋值的方法输出想要的结果,但这样的话,需要改动脚本内容.其实也可以在脚本中定义参数,然后再在执行脚本的时候对参数赋值,而无需改动脚本内容. 在PowerShell脚本中,可以使用param()声明参数,如下: param($a,$b) write-host "Hello,$a" write-host "nihao,$b" 将以上内容保存在F盘根目录下,命名为hello.ps1. 在命令提示符下运行该脚本,并分别为参

如何让powershell脚本可以在计划任务中自动执行

今天在测试PS脚本的时候,,突然想到,让脚本每天定时自动执行,因为以前有做过Bat的经验,就想,这个还不简单,直接在windows的计划任务中创建任务不就可以了吗?于是就动手测试了,结果发现悲剧了,PS1后缀的脚本无法直接在计划任务中执行好吧,只能找度娘出马了,于是找了这种方法,自己记录一下1:我这边在我的电脑上写了一个简单的获取服务的脚本,之后保存为services.ps1这样的名称        get-service  | where{$_.status -eq "running"

标准动作中犯的错误,使用过程中忘记写结束符号所发生的错误

例如 错误写法: <jsp:getProperty property="userName" name="user" > 正确写法:<jsp:getProperty property="userName" name="user" /> 导致的异常: HTTP Status 500 - type Exception report message description The server encounte

script脚本中写不写$(document).ready(function() {});的区别

$(document).ready() 里的代码是在页面内容都加载完才执行的,如果把代码直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,此时如果你标签里执行的代码调用了当前还没加载过来的代码或者dom,那么就会报错,当然如果你把script标签放到页面最后面那么就没问题了,此时和ready效果一样. $(document).ready(function(){})可以简写成$(function(){}); 点击段落后,此段落隐藏: <html> <head