使用PowerShell来查看多台远程计算机路径

本篇将介绍如何使用PowerShell来查看多台远程计算机路径 概念: 1. 首先要设定一个数组变量包含所有的计算机名 2. 其次是用for循环来逐个进行路径测试 注意事项: 因为数组变量是存在在本地计算机的变量,因此如果你想将本地的变量传输到远程计算机时,需要作已说明。 例子: 如果你使用的是PowerShell 2.0 $arrComp = @(“SERVER01″,”SERVER02″,”SERVER03″,”SERVER04″,”SERVER05″,”SERVER06″,”SERVER07”)for($i=0;$i -lt 7;$i++){ icm -computername $arrComp[$i] -scriptblock { param($arrComp, $i) echo $arrComp[$i]…

如何让Powershell循环运算执行的更快

本篇将介绍如何让你的Powershell循环运算执行的更快,经过试验证明,改良后的脚本要是正常循环脚本执行速度的3倍以上。 举例:如果需要运行一个Powershell脚本获取100台服务器中每一个服务器当前登录的用户。 我们知道如果用普通的循环,我们需要一个含有一个txt文件,文件包含了服务器的列表,或者你可以用其他方式获取,在这不多讲。 $servers = get-content “c:fileservers.txt” 然后使用icm来将你想要执行的任务传进scriptblock foreach($s in $servers){icm -computername $s -scriptblock {(get-wmiobject win32_computersystem).username}} 在以上脚本中,需要逐个的访问,然后执行scriptblock中的脚本,如果其中有一个服务器down掉,或者是延迟,你的整个脚本会运行很久很久。 因此有了以下的做法 icm -computername (get-content “c:fileservers.txt”) -scriptblock {(get-wmiobject win32_computersystem).username} 表面上来看,两个脚本得到的结果基本差不多,但概念上就差了很多。第二个脚本更快一些。因此推荐使用第二种,因为第二种是并行处理。

如何利用PowerShell来创建自己的命令行

本篇将介绍如何使用PowerShell来创建自己的命令行。 首先,先要了解关于Import-Module这个命令。Import-Module顾名思义,就是说需要导入Module。 换句话来说Module就是你需要创建的命令行,通常储存为psm1。 以下,我就将通过PowerShell发送email来讲解如何创建自己的命令行。 你需要使用记事本或者PowerShell ISE来编辑你的PowerShell命令,我这里就将利用PowerShell来创建一个Send-Msg的命令(用来发送email) Function Send-Msg () { [string]$sendfrom = “enquiry[at]901it.com”;[string]$sendto=read-host “Please enter the email address you want to send to”;[string]$subject=”This is an…

举例&详解PowerShell中变量, 循环和条件

本篇将介绍PowerShell中的变量(Variable)和循环(Loop)和条件(Condition)。 初学者在PowerShell编写脚本时,总会遇到理解上面的问题。无论是你有编程基础还是没有编程基础,理解变量和循环都是编写PowerShell脚本必须要掌握的知识。 首先,变量 $。变量无非就是这个值是可变的,在PowerShell中变量使用$来表示的,变量不仅仅可以代表字符也可以代表功能。 举例: 变量是字符时: $i=”Cool”“This is $i”“This is Cool” 变量是功能时: $p = get-process bits$p 变量是功能以及字符时: $service = Get-Service bits$service$msg = “Service Name is…

用PowerShell来查看AD的构架版本 (Schema Version)

本篇将介绍如何使用PowerShell来查看Active Directory (简称:域,AD)的构架版本。 如果你需要同时管理很多域,有些时候你管理的域并不是由你建立的,在这个时候有必要搞清楚AD的构架版本,以至于对管理的环境有所理解。 这个时候只要你登陆到任意一台有PowerShell的PC,且这台PC是你所要查看域中,你就可以通过PowerShell来查看当前AD的构架版本: Get-ADObject -Identity “cn=Schema,cn=Configuration,dc=%dcname1%,dc=%dcname2” -Properties * | Select objectVersion 其中name1,name2是基于你的域名城,剩下其他的脚本均是固定的。 命令正确,你将会看到一个objectversion:数值。 具体数字代表什么,请参阅下表: 13 – Windows 2000 Server30 – Windows Server 200331…

解决PowerShell在运行AD模块时初始化报错

本篇将介绍如何解决PowerShell在运行AD (Active Directory)模块时初始化报错。 当你在导入Active Directory Module (AD模块)时,如果出现来以下报错怎么办? “Error initializing default drive: ‘Unable to find a default server with Active Directory Web Services running” 以上报错表述了当前运行PowerShell的PC找不到正在运行的Active Directory Web…

PowerShell查看磁盘空间编译与功能

本篇将介绍如何用PowerShell来查看磁盘空间,以及延伸到如何建立一个Parameter,甚至通过编写的PowerShell脚本来创建一个PowerShell功能。 主要命令行:Get-WMIobject ; Parameter ; cmdletbinding() ; Function ; 如何用PowerShell 查看C盘数据: Get-wmiobject win32_logicaldisk -filter “DeviceID=’c:’” DeviceID : C:DriveType : 3ProviderName :FreeSpace : 16442933248Size : 42842714112VolumeName…

如何正确使用远程PowerShell (Remote PowerShell)

本篇将详细讲解如何使用 远程PowerShell (Remote PowerShell)来解决企业服务器出现的问题。 主要命令行:Invoke-Command ; New-PSSession ; Foreach ; Copy-Item 场景:如果你仅仅是操作一个Server,你可能看不出远程PowerShell (Remote PowerShell) 的威力,但当你要操作成百上千台的服务器是,remote powershell就显得极为重要。 举例:如果你想要在100台server上同时安装Windows Feature (例如 IIS,Hyper-V等组件),如果要远程登陆到每一个Server且安装组件,可能要花费几天,但是如果使用远程Powershell,有可能你的工作将在短短的几秒钟完成。 1. 大家都知道Invoke-Command允许一台计算机在另外一台计算机上远程执行命令行,的确命令行本身已经给管理员们带来了很大的方便,但是每一次执行icm的时候,如果选择的是某一个服务器,计算机都会尝试连接到远端server>执行命令行>最后断开与远端server的链接。但是如果选择的是远程登陆的是回话,则会一直保持着联系,而且在运行速度上Session也要远远快于computername。 举例: icm -comp…

使用PowerShell设定计划任务删除大于7天的文件

本篇将介绍如何使用PowerShell来胜定计划任务删除大于7天的文件。 本功能仅仅适用于PowerShell 2.0以及以上的计算机,且操作系统需要Windows 7以上 (Windows 7, Windows 8, Windows Server 2008, 以及Windows Server 2012) 本功能可以通过batch文件来完成,但是介于PowerShell拥有着更强大的功能,因此Microsoft也鼓励程序员以及IT Pro们使用PowerShell来完成需要完成的任务。 1. 打开计划任务 2. 创建一个基本的计划任务 3. 为计划任务取一个名字 4. 在安全选项中,勾选无论用户登录与否 5.…

如何用Powershell定期压缩文件并删除

本篇将介绍如何使用Powershell定期压缩文件并删除。 要想执行本操作,首先要确定计算机已经安装了软件7zip。 以下代码仅仅删除7天以内文件。 具体Powershell代码如下: Function Zip {Param([string]$zipFile,[string[]]$toBeZipped)$CurDir = Get-LocationSet-Location “C:Program Files7-zip”.7z.exe A -tzip $zipFile $toBeZipped | out-nullSet-Location $CurDir}$files1 = (Get-ChildItem D:TestlocationLogs*.* ) If((Test-Path D:TestlocationShare$(get-date -f…