Welcome 微信登录

首页 / 编程脚本

Powershell实现监测服务器连通状态

Powershell实现监测服务器连通状态

工作中可能会遇到有几台托管的服务器,比如数据库,一旦网络中断就会影响到数据采集。为此你可以使用下面脚本,它用计划任务每小时执行一次,一旦服务器出现断网,则会弹出提示窗口,代码如下:复制代码 代码如下:$computerNames = @("10.3.X.56","10.0.XX.123")$computerNames|%{ if(!(Test-Connection -ComputerName $_ -Quiet )){ cmd /c msg * ($_) ...
PowerShell中终止管道的方法

PowerShell中终止管道的方法

如果你能够提前知道你想从管道中获取元素的个数,可以使用Select-Object来终止流处理命令的的管道,这会节省很多时间。下面的例子会从Windows文件夹下搜寻 explorer.exe示例,因为Select-Object语句可以在管道找到结果的那一瞬终止管道。否则,Get-ChildItem会递归的遍历所有子目录然后匹配出你想要的结果。复制代码 代码如下:#requires -Version 3Get-ChildItem -Path c:Window...
PowerShell实现在字符串中查找大写字母

PowerShell实现在字符串中查找大写字母

如果你想找到字符串中的大写字符,你可能会使用正则表达式。亦或者使用你的大写字母列表一个个匹配,当然更灵活的是使用.NET中的 IsUpper()函数。小编注:.NET是PowerShell的土壤,尽最大可能挖掘出这些framework框架中的函数,是我们伸手党永恒的追求。下面的例子,会扫描字符串中的每一个字符,然后返回遇到的第一个大写字母的位置:$text = "here is some text with Uppercase letters" $c = ...
PowerShell实现查询打开某个文件的默认应用程序

PowerShell实现查询打开某个文件的默认应用程序

许多文件扩展名和一个可执行应用程序绑定。正因为这样你才可以使用Invoke-Item打开一个文档。要找出一个给定后缀名的文件是由那个默认引用程序打开它,并不麻烦。我们可以使用Windows系统中的注册表,自行编程解决。但是在扫描注册表时,要稍微留意一下32位和64位机器的问题,这不是本文重点,点到为止。另外一种途径,稍显旁门左道,调用Windows API。下面的例子会演示如何调用。采取这种途径最大的优势是借力于操作系统。而你的付出成本只是用C#代码间接调...
PowerShell在控制台输出特殊符号的方法

PowerShell在控制台输出特殊符号的方法

您知道吗,PowerShell控制台也可以输出特殊的图标?而你需要做的只是,设置控制台的字体为TrueType 字体,比如”Consolas”。要显示特殊字符,请使用十进制或十六进制字符代码,例如:[Char]8730[Char]0x25BA或着打开系统上内置的应用程序 “CharacterMap” 来选择一个你想在控制台上显示的的符号。下面的例子就是通过这种途径来把PowerShell控制台上的提示符信息变得更加诡异:或着打开系统上内置的应用程序 “Ch...
PowerShell Continue语句使用示例

PowerShell Continue语句使用示例

当你在一个循环的内部使用 “Continue”语句时,可以跳过循环的当前迭代,继续执行下一个迭代。如果使用了”Break”语句,则会跳过剩余的所有迭代循环。这样就引发了一个问题,在一个多层嵌套循环中,哪一个循环会被影响。默认情况下,”Continue”只会影响到内层循环,但是你也可以用”Continue” 和 “Break” 指向外层循环的某一个标签。:outerForeach ($element in (1..10)){for ($x = 1000; $...
PowerShell实现参数互斥示例

PowerShell实现参数互斥示例

在PowerShell的函数中如果想让参数互斥,可以使用 “ParameterSetName”属性将一个parameter属性定义在不同的参数或着参数集合中。很多人可能没有留意,在PowerShell的函数中,我们可以将多个参数属性定义在同一个参数名上,这样配合mandatory可以让一个参数在某个场景下是强制的,在另外的场景下则是可选的。function Test-ParameterSet{[CmdletBinding(DefaultParameterS...
PowerShell中使用.NET将程序集加入全局程序集缓存

PowerShell中使用.NET将程序集加入全局程序集缓存

通常情况下,将程序集(Assembly)加入全局程序集缓存(GAC,Global Assembly Cache),可以使用GacUtil工具。只要使用/i参数,就可以把指定路径的程序集添加进GAC了。不过由于GacUtil并不是.Net Framework的一部分,而是和Windows SDK一起发布的,这就导致了机器中安装了.Net,却可能找不到GacUtil的情况。在PowerShell中,我们可以直接使用.Net的类库来搞定这件事,而不需要通过Gac...
PowerShell中获取当前运行脚本路径的方法

PowerShell中获取当前运行脚本路径的方法

在运行脚本的时候,有时候需要通过脚本文件所在位置的相对路径来做一些事,比如执行另一个脚本。以前在CMD时代,可以通过%~dp0来获取脚本所在的文件夹,那在PowerShell中要怎么做呢?很简单,通过内置的$MyInvocation变量:复制代码 代码如下:$x = $MyInvocation.MyCommand.Definition此时$x的值是当前运行中的脚本的绝对路径,再用Split-Path取它的父路径就可以了:复制代码 代码如下:$x = Spl...
PowerShell中的函数重载示例

PowerShell中的函数重载示例

在PowerShell中,我们可以使用Function关键字来定义一个函数,比如:Function Get-Data { Param ([int] $data = -1 ) return $data;}这个名为Get-Data的函数接收一个int类型的参数$data,直接将其返回。那么,我同时还需要一个接收string类型的Get-Data函数怎么办?方法比较奇怪,至少和传统的C++之类的语言不同。在PowerShell中定义重载函数,需要指定参数所属的P...
PowerShell批量文件重命名操作实例

PowerShell批量文件重命名操作实例

总算发现PowerShell相对于CMD来说实用的地方了。事情是这样的,我下载了一些美剧(抱歉,看完会删的),通常文件名都比较长,包含了很多我不需要的信息,,比如:复制代码 代码如下:别对我撒谎.Lie.To.Me.S02E11.Chi_Eng.HDTVrip.720×396-YYeTs人人影视V2.rmvb别对我撒谎.Lie.To.Me.S02E12.Chi_Eng.HDTVrip.720×396-YYeTs人人影视.rmvb别对我撒谎.Lie.To.M...
Powershell脚本的4种执行权限介绍

Powershell脚本的4种执行权限介绍

Restricted——默认的设置, 不允许任何script运行AllSigned——只能运行经过数字证书签名的scriptRemoteSigned——运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名Unrestricted——允许所有的script运行windows默认不允许任何脚本运行,你可以使用"Set-ExecutionPolicy"cmdlet来改变的你PowerShell环境。例如,你可以使用如下命令让...
<< 91 92 93 94 95 96 97 98 99 100 >>