-
删除函数 控制台定义的函数只会在当前会话生效,一旦控制台退出,会自动消失。在不关闭控制台的条件下删除一个已经定义好的函数,可是使用虚拟驱动器的方法: PS C:PowerShell> del Function:myPing PS C:PowerShell> myPing 无法将“myPing”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的 拼写,如果包括路径,请确保路径正确,然后重试。 所在位置 行:1 字符: 7 + myPing <<<< + CategoryInfo : ObjectNotFound: (myPing:String) [], CommandNotFo undException + FullyQualifiedErrorId : CommandNotFoundException Suggestion [3,General]: 未找到命令 myPing,但它确实存在于当前位置。Windows Pow Shell 默认情况下不从当前位置加载命令。如果信任此命令,请改为键入 ".myPing"。有 关更多详细信息,请参阅 "get-help about_Command_Precedence"。查看全部
-
更新函数 如果要更新已经定义好的函数,简单的方法是重新定义,这样新的定义会覆盖旧的定义。但是如果函数代码没有保存副本,可以先将函数定义导出到ps文件,然后就可以编辑了。 PS C:PowerShell> $function:MyPing | Out-File myPing.ps1 PS C:PowerShell> $function:MyPing PING.EXE -n 1 $args PS C:PowerShell> $function:MyPing | Out-File myPing.ps1 PS C:PowerShell> .myPing.ps1 必须指定 IP 地址。 PS C:PowerShell> notepad.exe $$查看全部
-
把函数精简成一行 你 可以将一个函数定义在一行上,但是这样阅读和理解起来就不方便,可以在每条命令后加分号进行分割。 PS C:PowerShelltest> Function cd...{ cd.. ; cd.. } PS C:PowerShelltest> cd... PS C:>查看全部
-
使用函数作为别名 假如Powershell不支持”cd..” 命令,你可以通过定义函数实现这个功能: PS C:Powershell> Function cd.. { cd ..} PS C:Powershell> cd.. PS C:> 假如Powershell不支持Ping命令,也可以如法炮制: PS C:PowerShell> Function Ping2 { PING.EXE -n 1 $args } PS C:PowerShell> Ping2 www.mossfly.com 正在 Ping mossfly.com [116.255.205.70] 具有 32 字节的数据: 请求超时。 116.255.205.70 的 Ping 统计信息: 数据包: 已发送 = 1,已接收 = 0,丢失 = 1 (100% 丢失), 控制台上多行输入定义函数 PS C:PowerShell> Function MyPing >> { >> PING.EXE -n 1 $args >> } >> PS C:PowerShell>查看全部
-
函数是自定义的Powershell代码,有三个原则: 简短:函数名简短,并且显而易见。 聚合:函数可以完成多个操作。 封装和扩展:将一批Powershell语句进行封装,实现全新的功能需求。 函数的结构由三部分组成:函数名,参数,函数体 Function FuncName (args[]) { code; }查看全部
-
Switch 本是多路分支的关键字,但是在Powershell中由于Switch支持集合,所以也可以使用它进行循环处理。下面举两个例子。 第一个将Foreach循环转换成Switch循环: #使用Foreach循环 $nums=10..7 foreach($n in $nums) { "n=$n" } n=10 n=9 n=8 n=7 #使用Switch循环 $nums = 10..7 Switch ($nums) { Default { "n= $_" } } n= 10 n= 9 n= 8 n= 7 有时对集合的处理,在循环中还须条件判断,使用Switch循环可以一部到位,例如: $nums = 10..7 Switch ($nums) { {($_ % 2) -eq 0} {"$_ 偶数"} {($_ % 2) -ne 0} {"$_ 基数"} } 10 偶数 9 基数 8 偶数 7 基数查看全部
-
For循环的特殊应用 上面的For循环示例停留在数字层面上,其实While循环能办到的事,For循环也可以,只是可能有时不方便而已。例如判断域名的例子: for($domain="";!($domain -like "www.*.*");$domain=Read-Host "Input domain") { Write-Host -ForegroundColor "Green" "Please give a valid domain name." } Please give a valid domain name. Input domain: www Please give a valid domain name. Input domain: mossfly.com Please give a valid domain name. 下面的例子演示逐行读取文本文件 1 2 3 4 5 6 for($file=[IO.File]::OpenText("c:autoexec.bat") ; !($file.EndOfStream);$line=$file.ReadLine() ) { $line; } $file.Close() REM Dummy file for NTVDM查看全部
-
For循环是特殊类型的While循环 在For循环开始的圆括号中,由分号隔开的语句为循环的控制条件,分别为:初始化,循环执行满足的条件,增量。 For循环的控制语句第一个和第三个可以为空: $sum=0 $i=1 for(;$i -le 100;) { $sum+=$i $i++ } $sum查看全部
-
如果你知道循环的确切次数可以使用For循环,For循环属于计数型循环,一旦达到最大次数,循环就会自动终止。下面的例子通过循环求1-100的数列和。 $sum=0 for($i=1;$i -le 100;$i++) { $sum+=$i } $sum查看全部
-
跳出循环语句 跳出循环语句使用break关键字 $n=1 while($n -lt 6) { if($n -eq 4) { break } $n $n++ }查看全部
-
终止当前循环 使用continue关键字,可是终止当前循环,跳过continue后其它语句,重新下一次循环。 $n=1 while($n -lt 6) { if($n -eq 4) { $n=$n+1 continue } else { $n } $n=$n+1 } 1 2 3 5查看全部
-
单独使用While $n=5 while($n -gt 0) { $n $n=$n-1 } 5 4 3 2 1查看全部
-
Do和While可能产生死循环,为了防止死循环的发生,你必须确切的指定循环终止的条件。指定了循环终止的条件后,一旦条件不满足就会退出循环。 继续与终止循环的条件 do-while()会先执行再去判断,能保证循环至少执行一次。 PS C:Powershell> do { $n=Read-Host } while( $n -ne 0) 10 100 99 2012 世界末日 为什么不退出 因为条件不满足 怎样才能满足 请输入一个0,试一试 0 PS C:Powershell>查看全部
-
Foreach-object 为cmdlet命令,使用在管道中,对管道结果逐个处理,foreach为遍历集合的关键字。 下面举两个例子: $array=7..10 foreach ($n in $array) { $n*$n } #49 #64 #81 #100 foreach($file in dir c:\windows) { if($file.Length -gt 1mb) { $File.Name } } #explorer.exe #WindowsUpdate.log 这里只为了演示foreach,其实上面的第二个例子可以用Foreach-Object更简洁。 PS C:\Powershell> dir C:\Windows | where {$_.length -gt 1mb} |foreach-object {$_.Name} explorer.exe WindowsUpdate.log查看全部
-
调用方法 在ForEach-Object中,$_代表当前对象,当然也允许通过$_,调用该对象支持的方法。 下面的例子杀死所有IE浏览器进程: PS C:Powershell> Get-Process iexplore Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 883 29 14728 22432 181 34.26 4300 iexplore 771 28 55552 129152 425 8.56 5732 iexplore 1216 51 104324 143916 539 572.41 5912 iexplore 801 25 49200 25372 285 5.99 6252 iexplore 691 25 57564 95796 333 8.08 6388 iexplore 1256 38 85848 127012 379 20.37 7856 iexplore PS C:Powershell> Get-Process iexplore | ForEach-Object {$_.kill()} PS C:Powershell> Get-Process iexplore查看全部
举报
0/150
提交
取消