-
使用专用的变量命令 为了管理变量,powershell提供了五个专门管理变量的命令Clear-Variable,Get-Variable,New-Variable,Remove-Variable,Set-Variable。因为虚拟驱动器variable:的存在,clear,remove,set打头的命令可以被代替。但是Get-Variable,New-Variable。却非常有用new-variable可以在定义变量时,指定变量的一些其它属性,比如访问权限。同样Get-Variable也可以获取这些附加信息。 变量写保护 可以使用New-Variable 的option选项 在创建变量时,给变量加上只读属性,这样就不能给变量重新赋值了。 PS C:\test> New-Variable num -Value 100 -Force -Option readonly查看全部
-
删除变量 因为变量会在powershell退出或关闭时,自动清除。一般没必要删除,但是你非得删除,也可以象删除文件那样删除它。 PS C:\test> Test-Path variable:value1 True PS C:\test> del variable:value1 PS C:\test> Test-Path variable:value1 False查看全部
-
验证变量是否存在 验证一个变量是否存在,仍然可以象验证文件系统那样,使用cmdlet Test-Path。为什么?因为变量存在变量驱动器中。 PS C:\test> Test-Path variable:value1 True PS C:\test> Test-Path variable:value2 True PS C:\test> Test-Path variable:valueUnkonw False查看全部
-
查找变量 因为有虚拟驱动variable:的存在,可以象查找文件那样使用通配符查找变量。例如要查询以value打头的变量名。 PS C:\test> ls variable:value* Name Value ---- ----- value1 20 value2 10查看全部
-
查看正在使用的变量 Powershell将变量的相关信息的记录存放在名为variable:的驱动中。如果要查看所有定义的变量,可以直接遍历variable: PS C:\test> ls variable: Name Value ---- ----- "I"like $ mossfly $ cls ? True ^ cls查看全部
-
交换变量的值 要交换两个变量的值,传统的程序语言至少需要三步,并且还需定义一个中间临时变量。 $Value1 = 10 $Value2 = 20 $Temp = $Value1 $Value1 = $Value2 $Value2 = $Temp 在powershell中,交换两个变量的值,这个功能变得非常简单。 PS C:\test> $value1=10 PS C:\test> $value2=20 PS C:\test> $value1,$value2=$value2,$value1 PS C:\test> $value1 20 PS C:\test> $value2 10查看全部
-
给多个变量同时赋值 赋值操作符不仅能给一个变量赋值,还可以同时给多个变量赋相同的值。 PS C:\test> $a=$b=$c=123查看全部
-
赋值和返回值 赋值操作符为“=”,几乎可以把任何数据赋值给一个变量,甚至一条cmdlet命令 ,为什么,因为Powershell支持对象,对象可以包罗万象。 PS C:\test> $item=Get-ChildItem . PS C:\test> $item Directory: C:\test Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2011/11/23 17:25 ABC -a--- 2011/11/24 18:30 67580 a.html -a--- 2011/11/24 20:04 26384 a.txt查看全部
-
选择变量名 在powershell中变量名均是以美元符”$”开始,剩余字符可以是数字、字母、下划线的任意字符,并且powershell变量名大小写不敏感($a和$A 是同一个变量)。 某些特殊的字符在powershell中有特殊的用途,一般不推荐使用这些字符作为变量名。当然你硬要使用,请把整个变量名后缀用花括号括起来。 PS C:\test> ${"I"like $}="mossfly" PS C:\test> ${"I"like $} mossfly查看全部
-
powershell 不需要显示地去声明,可以自动创建变量,只须记住变量的前缀为$. 创建好了变量后,可以通过变量名输出变量,也可以把变量名存在字符串中。但是有个例外单引号中的字符串不会识别和处理变量名。查看全部
-
一定要注意:powershell中单引号和双引号起到的作用是不一样的。 单引号的内容是string,直接输出 双引号的内容可以是指令,可以执行查看全部
-
Powershell调用入口的优先级 别名:控制台首先会寻找输入是否为一个别名,如果是,执行别名所指的命令。因此我们可以通过别名覆盖任意powershell命令,因为别名的优先级最高。 函数:如果没有找到别名,会继续寻找函数,函数类似别名,只不过它包含了更多的powershell命令。因此可以自定义函数扩充cmdlet 把常用的参数给固化进去。 命令:如果没有找到函数,控制台会继续寻找命令,即cmdlet,powershell的内部命令。 脚本:没有找到命令,继续寻找扩展名为“.ps1”的Powershell脚本。 文件:没有找到脚本,会继续寻找文件,如果没有可用的文件,控制台会抛出异常。 The term ‘now’ is not recognized as the name of a cmdlet, function, script file, or operable program. Chec g of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:4 + now <<<< + CategoryInfo : ObjectNotFound: (now:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException查看全部
-
关于脚本 脚本和批处理都属于伪可执行文件,它们只是包含了若干命令行解释器能够解释和执行的命令行代码。 执行批处理文件 批处理是扩展名为”.bat”的文本文件,它可以包含任何cmd控制台能够处理的命令。当批处理文件被打开,Cmd控制台会逐行执行每条命令。那Powershell能够直接执行批处理吗? 将下列命令保存为ping.bat @echo off echo batch File Test pause Dir %windir%/system 然后执行ping 屏幕会打印ping命令帮助,说明调用的ping cmd 而不是ping.bat。 改为: PS C:\PS> ./ping batch File Test Press any key to continue . . . 这时运行的是批处理。 通过cmd进入cmd控制台输入ping发现执行的不是ping命令,而是直接运行ping.bat ,也就是说可以通过.bat 覆盖cmd命令。这种机制很危险,如果有人侵入电脑,并将系统内部命令篡改成自己批处理,那就太悲剧了。 这种命令与脚本的混淆不会发生在powershell中,因为powershell有更安全的机制。 执行powershell脚本 Powershell拥有自己的脚本,扩展名为“.ps1” PS C:\PS> echo "dir;Get-PSProvider;help dir" >test.ps1 PS C:\PS> Get-Content ./test.ps1 dir;Get-PSProvider;help dir PS C:\PS> ./test.ps1 初次执行脚本时,可能会碰到一个异常: File ” C:\PS\test.ps1″ cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details. At line:1 char:10 + .test.ps1 <<<< 这是powershell的默认安全设置禁用了执行脚本,要启用这个功能需要拥有管理员的权限。查看全部
-
在Powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息。尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢?例如Test-Connection -Count 2 -ComputerName,让-“-Count 2″ 固化在别名中。 这时简单的别名无法完成上述需求,可以通过函数来完成它,并且一旦把函数拉过来,定义别名会变得更加灵活。 PS C:\PS> function test-conn { Test-Connection -Count 2 -ComputerName $args} PS C:\PS> Set-Alias tc test-conn PS C:\PS> tc localhost Source Destination IPV4Address IPV6Address Bytes Time(ms) ------ ----------- ----------- ----------- ----- -------- test-me-01 localhost 127.0.0.1 ::1 32 0 test-me-01 localhost 127.0.0.1 ::1 32 0 有了函数牵线,别名可以完成更高级更强大的功能,其中$args为参数的占位符,经测试,发现这个占位符必须以$args命名,否则不能识别,会抛出异常查看全部
-
保存自己的别名 可以使用Export-Alias将别名导出到文件,需要时再通过Import-Alias导入。但是导入时可能会有异常,提示别名已经存在无法导入: PS C:\PS> Import-Alias alias.ps1 Import-Alias : Alias not allowed because an alias with the name 'ac' already exists. At line:1 char:13 + Import-Alias <<<< alias.ps1 + CategoryInfo : ResourceExists: (ac:String) [Import-Alias], SessionStateException + FullyQualifiedErrorId : AliasAlreadyExists,Microsoft.PowerShell.Commands.ImportAliasCommand 这时可以使用Force强制导入。 PS C:\PS> Export-Alias alias.ps1 PS C:\PS> Import-Alias -Force alias.ps1查看全部
举报
0/150
提交
取消