Microsoft PowerShell & Scripts | 收集有用的脚本

[PS]使用 PowerShell 下载文件

[ 2014/02/24 13:05 | by gOxiA ]

powershell_logo

使用 PowerShell 下载文件

        前段时间部署了一个基于 Windows Server 2012 R2 的 Server Core 环境,在实际使用中会遇到需要从网站上下载文件的问题,因为 Server Core 并未提供 IE,所以下载就不是那么方便了。还好在 PowerShell 下可以调用 System.Net.WebClient 来实现下载。即:

$client = New-Object “System.Net.WebClient”

$client.DownloadFile(“http://www.maytide.net/info.txt”,”D:\info.txt”)

        虽然上述的脚本实现了从一个 URL 下载文件到本地,但是实际调用起来会感觉很麻烦。因为每次都要输入很长的脚本命令才能完成一个下载。gOxiA 在编程方面也没什么天赋,实属一菜鸟,参考了以前的脚本写了一个粗糙的下载脚本,其功能是执行脚本后提示输入 URL 的地址,然后再输入本地存储的文件路径,最后执行下载,并根据结果判断是否下载完毕。

        脚本中涉及了一些基本的命令代码,其中 Write-Host 用于输出提示文本;Read-Host 用于记录用户输入的数据;调用下载、下载地址、本地存储都使用变量,最后用 Test-Path 对下载的文件进行检查,并使用 if...else 进行判断。下面就是整个脚本的内容:

#清屏
Clear
#脚本基本信息提示
Write-Host
Write-Host PowerShell Download Tools Script.
Write-Host
#输入下载资源地址,赋予变量 $url
Write-Host Please enter URL address of download sources! -ForegroundColor Red
$url= Read-Host "Enter the URL..."
Write-Host
#输入文件存储路径,赋予变量 $local
Write-Host Please enter the local store path! -ForegroundColor Green
$local= Read-Host "Enter the store path..."
#调用下载,赋予变量 $dl
$dl= New-Object "System.Net.WebClient"
#执行下载
Write-Host
Write-Host Downloading... Please wait!!!
$dl.DownloadFile("$url","$local")
Write-Host
#将路径检查命令赋予变量 $result
$result=Test-Path $local
#对 $result 结果进行判断,如果是 True 表示下载完成,否则失败
if($result -eq $True)
{
    Write-Host Result status: Completed!!! -ForegroundColor Green
}
else
{
    Write-Host Result status: Failed!!! -ForegroundColor Red
}

        执行效果如下图:

image

ScriptingGuy 使用 VBScript 让计算机讲出你想说的话

        gOxiA 对 Scripts 和其他开发语言都并不熟悉,这段脚本程序也是从新浪微博上转过来的,转载率非常之高,到底是因为什么引人关注呢?!将下面这段脚本命令输入到记事本中,并存储为 vbs 扩展名,打开音箱或带上耳机,最后双击运行。

CreateObject("SAPI.SpVoice").Speak "I Love You"

        Yeh,你将会听到一段计算机语音朗读出“I Love You”,是不是很有意思。简单的一段命令便能够让计算机讲出你想说的话,看来还是很有使用价值的。

        这段脚本其实是使用了 Windows API 来调用了“Windows 讲述人”功能,Microsoft 为我们提供了强大的接口能够让我们利用 Windows 的功能实现更多的应用!而且利用脚本我们能高效的完成很多工作!

        Microsoft Scripts Center 提供了非常有价值的脚本学习资料,如果你有兴趣不妨学习学习!也许你也能利用 Windows 搞出来有意思的应用或提高你的工作效率。

Tags: ,

powershell_logo 正确使用 Windows PowerShell 执行服务器管理器操作

        最近在学习 Exchange 2010,其中会涉及到 Exchange 2010 的安装前准备工作,而这一内容主要包括了系统角色及功能的安装,虽然通过图形界面可以执行这些操作,但是如果使用命令行来执行自动化的批量安装岂不是更好。借此机会 gOxiA 可以好好学习学习 Windows Server 2008 R2 的管理命令。

        大家应该知道,在 Windows Server 2008 R2 上,Windows PowerShell 的角色更加重要了,当我们再使用 ServerManagerCmd 来执行角色和功能安装时会看到一段系统提示,告知我们这一服务器管理命令将在下一个系统版本中被抛弃,取而代之的是 Windows PowerShell cmdlet,不可否认从目前相关的介绍来看 Windows PowerShell 是非常强大的,并且已经有很多微软产品开始支持基于 Windows PowerShell 的管理。看来大势已定,不想落后就必须学习和了解 Windows PowerShell!

        其实,gOxiA 对 Windows PowerShell 了解甚少,看到那些涉及到编程语言的字符我就害怕(编程菜鸟,完全不懂的级别),这不今天就出了丑!从相关帮助中了解到,在 Windows PowerShell 下可以使用 Get-WindowsFeatureAdd-WindowsFeatureRemove-WindowsFeature 来管理服务器的角色和功能,出于之前对 Windows PowerShell 的简单认识,于是找到了附件中的 Windows PowerShell 程序并启动了它。

WindowsPowerShell

        在打开的 Windows PowerShell 环境下,键入了 Get-WindowsFeature,问题出来了!给我反馈了一大堆的红色错误信息,很明显 Windows PowerShell 并未识别这个命令。如下图所示:

ps_module_error 

        查阅了 TechNet 资源库才了解到,如果通过 Windows PowerShell 来执行服务器管理器的操作,必须加载其对应的模块 — ServerManager,我们可以在 Windows PowerShell 环境下执行“Get-Module”获取当前系统中的模块。gOxiA 的个人理解是 Windows PowerShell 是一个功能强大的环境,除了内置的命令和支持以外,我们还可以通过其他产品本身提供的 Windows PowerShell 模块,为其提供在 Windows PowerShell 环境下对该产品的管理支持。比如 Exchange Server,就在其程序组中提供了一个 PoweShell 的快捷方式,通过该程序打开的 PowerShell 环境将可以直接支持 Exchange Server。

get-module

        既然如此,那么在 Windows Server 2008 R2 中应该同样也提供了一个与之类似的快捷方式,原来在“管理工具”程序组中确实提供了一个 PowerShell 快捷方式,名为:“Windows PowerShell Modules”。直接启动这个程序,便可以在 Windows PowerShell 环境下执行服务器管理器操作。

WindowsPowerShellModules

        前面已经讲过,只要 Windows PowerShell 加载对应的模块,即可以通过 Windows PowerShell 执行相关的操作。那么我们在默认 Windows PowerShell 环境下只需要执行“Import-Module ModuleName”即可加载相关的模块。如下图所示:

import-module_servermanager

        最后,需要注意的是当重新进入 Windows PowerShell 后需要重新加载需要使用的模块。关于 PowerShell 的使用 gOxiA 也在逐步进行学习和了解,希望日后能有更大的收获!

HTA Application 的基本特性

[ 2007/06/09 10:12 | by gOxiA ]

      节选自MVP友人碎片的一篇Blog:终极改变:内嵌脚本到一个GUI界面。为了使脚本变得更加人性化、更具交互式那么HTA是最佳的选择,脚本的学习和应用对ITPro来说是至关重要的,其好处我就不过多阐述。

      节选碎片的这片文章中“HTA Application 的基本特性”部分主要是计划自己写个imagex的操作脚本并集成到我自己个性化过的VistaPE中,这样方便我周围的一些朋友是用VistaPE来备份或恢复系统是用。

      其实本人对脚本的编程实属菜鸟,工作中涉及到的一些脚本也都是从微软脚本中心找到修改的,个人检讨应该开始重点学习脚本的编程了……

      HTA Application 的基本特性:

支持平台

Windows XP

Windows Server 2003

Windows 2000

Windows NT 4.0

是,需要安装Active Directory Client Extensions

Windows 98

是,需要安装Active Directory Client Extensions

脚本代码

strComputer = "MyComputer"
Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators,group")
Set objUser = GetObject("WinNT://" & strComputer & "/kenmyer,user")
objGroup.Add(objUser.ADsPath)

      通常我们为了实现数字键盘打开都会编辑注册表,对于初手要记住老长的键位确实够难的,所以我们可以通过脚本来实现此要求,编写的脚本放到启动项或同过组策略自动运行即可。不过我怎么感觉这样很麻烦,呵呵!总之微软既然为大家提供了此HOWTO我想还是应该学习利用一下的。脚本内容如下:

set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{NUMLOCK}"

保存为numlock.vbs即可!

原文地址:http://support.microsoft.com/kb/314879/zh-cn

在网上找了个脚本可以查询到当前TCP的连接数目,非常有用哦!

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objNetworkSettings = objWMIService.Get("Win32_NetworkAdapterConfiguration")
Wscript.Echo "TCP连接数: " & objNetworkSettings.SetTCPNumConnections

Dim IIsObject
Set IIsObject = GetObject ("IIS://localhost/w3svc")
WScript.Echo "AnonymousUserName = " & IIsObject.Get("AnonymousUserName") & vbCrlf & _
"AnonymousUserPass = " & IIsObject.Get("AnonymousUserPass") &vbCrlf &vbCrlf &_
"WAMUserName = " & IIsObject.Get("WAMUserName") & vbCrlf & _
"WAMUserPass = " & IIsObject.Get("WAMUserPass")
Set IIsObject = Nothing

更改 DNS 区域类型

[ 2006/03/30 18:53 | by gOxiA ]

创建名称服务器 DNS 记录

[ 2006/03/30 18:51 | by gOxiA ]

本文摘自:http://www.microsoft.com/china/technet/community/scriptcenter/network/scrnet153.mspx


描述

在 DNS 服务器上创建名称服务器 (NS) 记录。

有关在这段代码中使用的 CreateInstanceFromPropertyData 方法的更多信息,请单击此处


支持平台

Windows Server 2003

Windows XP

否(然而,可以在 Windows XP 计算机上对远程 DNS 服务器运行脚本)

Windows 2000

是,需要安装 DNS WMI 提供程序

Windows NT 4.0


脚本代码
strDNSServer = "atl-dc-03.fabrikam.com"
strContainer = "fabrikam.com"
strOwner = "atl-srv-01.fabrikam.com"
intRecordClass = 1
intTTL = 600
strNSHost = "nameserver.fabrikam.com"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\MicrosoftDNS")
Set objItem = objWMIService.Get("MicrosoftDNS_NSType")
   errResult = objItem.CreateInstanceFromPropertyData _
       (strDNSServer, strContainer, strOwner, intRecordClass, intTTL, strNSHost)

分页: 1/4 第一页 1 2 3 4 下页 最后页 [ 显示模式: 摘要 | 列表 ]