[PS]使用 PowerShell 下载文件
使用 PowerShell 下载文件
前段时间部署了一个基于 Windows Server 2012 R2 的 Server Core 环境,在实际使用中会遇到需要从网站上下载文件的问题,因为 Server Core 并未提供 IE,所以下载就不是那么方便了。还好在 PowerShell 下可以调用 System.Net.WebClient 来实现下载。即:
虽然上述的脚本实现了从一个 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
}
执行效果如下图:
[Scripts]分享一段有趣的 VBScript 让计算机讲出你想说的
gOxiA 对 Scripts 和其他开发语言都并不熟悉,这段脚本程序也是从新浪微博上转过来的,转载率非常之高,到底是因为什么引人关注呢?!将下面这段脚本命令输入到记事本中,并存储为 vbs 扩展名,打开音箱或带上耳机,最后双击运行。
Yeh,你将会听到一段计算机语音朗读出“I Love You”,是不是很有意思。简单的一段命令便能够让计算机讲出你想说的话,看来还是很有使用价值的。
这段脚本其实是使用了 Windows API 来调用了“Windows 讲述人”功能,Microsoft 为我们提供了强大的接口能够让我们利用 Windows 的功能实现更多的应用!而且利用脚本我们能高效的完成很多工作!
Microsoft Scripts Center 提供了非常有价值的脚本学习资料,如果你有兴趣不妨学习学习!也许你也能利用 Windows 搞出来有意思的应用或提高你的工作效率。
[PowerShell] 正确使用 Windows PowerShell 执行服务器管理器操作
正确使用 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-WindowsFeature、Add-WindowsFeature 和 Remove-WindowsFeature 来管理服务器的角色和功能,出于之前对 Windows PowerShell 的简单认识,于是找到了附件中的 Windows PowerShell 程序并启动了它。
在打开的 Windows PowerShell 环境下,键入了 Get-WindowsFeature,问题出来了!给我反馈了一大堆的红色错误信息,很明显 Windows PowerShell 并未识别这个命令。如下图所示:
查阅了 TechNet 资源库才了解到,如果通过 Windows PowerShell 来执行服务器管理器的操作,必须加载其对应的模块 — ServerManager,我们可以在 Windows PowerShell 环境下执行“Get-Module”获取当前系统中的模块。gOxiA 的个人理解是 Windows PowerShell 是一个功能强大的环境,除了内置的命令和支持以外,我们还可以通过其他产品本身提供的 Windows PowerShell 模块,为其提供在 Windows PowerShell 环境下对该产品的管理支持。比如 Exchange Server,就在其程序组中提供了一个 PoweShell 的快捷方式,通过该程序打开的 PowerShell 环境将可以直接支持 Exchange Server。
既然如此,那么在 Windows Server 2008 R2 中应该同样也提供了一个与之类似的快捷方式,原来在“管理工具”程序组中确实提供了一个 PowerShell 快捷方式,名为:“Windows PowerShell Modules”。直接启动这个程序,便可以在 Windows PowerShell 环境下执行服务器管理器操作。
前面已经讲过,只要 Windows PowerShell 加载对应的模块,即可以通过 Windows PowerShell 执行相关的操作。那么我们在默认 Windows PowerShell 环境下只需要执行“Import-Module ModuleName”即可加载相关的模块。如下图所示:
最后,需要注意的是当重新进入 Windows PowerShell 后需要重新加载需要使用的模块。关于 PowerShell 的使用 gOxiA 也在逐步进行学习和了解,希望日后能有更大的收获!