[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
}
执行效果如下图:
[Tips]从初始 ServerCore 模式向 FullServer 转换
从初始 ServerCore 模式向 FullServer 转换
还记得 12年12月 gOxiA 与大家分享的两篇关于 Windows Server 2012 运行模式的文章“HOWTO:切换至 Windows Server 2012 的 Minimal Server 模式”、“Windows Server 2012 的四种运行界面模式”,介绍了 Windows Server 2012 如何在几个运行界面模式下进行转换。当时的测试都是基于初始 FullServer 模式进行的,即:带有 GUI 的服务器完整模式。所以当我们执行模式转换时并不会遇到问题,如果 Windows Server 初始安装时是 ServerCore 模式,那么当我们要向 Minimal 或 FullServer 转换时就会遇到错误,如下图所示:
出现这个错误的原因是以前的 Windows 版本中,即使禁用了某个服务器角色或功能,相应的二进制文件仍会保留在磁盘上,占用着磁盘空间,当然这一特性也使我们在日后重复安装角色或功能时而无需提供安装源。但在 Windows Server 2012 中则又有所改变,用户不仅可以禁用某个角色或功能,还可以完全删除相应的文件。即:要完全删除某个角色或功能时,在 Uninstall-WindowsFeature 中使用 –Remove 参数。
正因为如此,当 Windows Server 初始安装选择的是 ServerCore 模式时,一些角色或功能的二进制文件并未存储在当前系统中,所以当使用常规命令行进行安装时便会出现错误。所以我们需要在执行 Install-WindowsFeature 时使用 –source 参数指定安装源。完整的命令行参考如下:
其中,结尾“:2”为 Install.wim 映像索引 2,即 Windows Server 2012 R2 Standard,与本例初始安装的系统版本对应,如果需要确认 WIM 文件的信息,可以参考如下命令行:
查阅 TechNet Library 管理服务器核心服务器 资料,发现在 1.5 转换成“完全安装”模式 小节中提到如果希望使用 Windows 更新而不是某个 WIM 文件作为源,则只需要为 Install-WindowsFeature 使用 –Restart 参数,安装时便会自动从微软官方站点获取更新文件。(PS:有意思的方式,-Restart 可是重启参数啊!!!)不过实际测试此种方式并不实用,网络速度是最大的瓶颈!
解决了一个小小的问题,却积累了多个经验!
[Azure]HOWTO:在 Windows Azure 虚机上配置 SSTP VPN
HOWTO:在 Windows Azure 虚机上配置 SSTP VPN
VPN(虚拟专用网)大家并不会感到陌生,在 Windows Azure 上启用 VPN 服务的意义就更没必要多解释什么,大家自己心里知道就好!
目前 gOxiA 在 Windows Azure 的虚拟机上经过实践,基于 SSTP 的 VPN 是能够正常运作的,所以今天的内容也仅向大家介绍如何在 Windows Azure 虚拟机上配置 SSTP VPN。有关 VPN 常用协议的具体资料可以访问 TechNet Library 上 VPN 隧道协议 的文章。
要启用基于 SSTP 协议的 VPN 服务,需要准备一张证书,申请证书比较简单的办法就是用 SelfSSL 工具创建一个自签名证书,并将证书安装到 Windows Azure 虚拟机系统的计算机账户上,同时还要将证书导入到客户端“受信任的根证书颁发机构”中。这一配置过程就不再复述,创建自签名证书可参考下面的命令行:
接下来还要准备一台虚拟机,并在 Endpoint(端点)配置中创建 TCP 443 映射。
准备工作就绪,现在打开服务器管理器,添加角色和功能;勾选“Remote Access”,在后续的角色服务选择中复选“DirectAccess and VPN(RAS)”和“Routing”。
稍等片刻完成安装,Windows Server 2012 系统会要求重启系统,Windows Server 2012 R2 可直接开始进行初始配置。在“Configure Remote Access”中选择“Deploy VPN Only”,完成之后向导会自动打开 RRAS 控制台。
在 RRAS 控制台选中当前服务器,鼠标右键点击,执行“Configure and Enable Routing and Remote Access”,选择 Custom 进行自定义配置,在服务列表中只选择“VPN access”和“NAT”,之后跟随向导完成后续步骤,启动 RRAS 服务。
回到 RRAS 控制台界面进入当前服务器属性,切换到“Security”选项卡,选择之前导入的自签名证书。
再切换至“IPv4”选项卡,启用静态地址池,即“Static address pool”,并手工输入一个地址范围,如:192.168.2.1~192.168.2.20,最后确认完成整个设置。
至此, SSTP VPN 的配置我们已经接近完成,现在 RRAS 控制台依次展开列表,选中 IPv4 下的 NAT,右键点击执行“New Interface”,进行网卡的添加。
添加网卡时选择名为以太网开头的网卡(Ethernet)非 Internal,并在随后弹出的属性设置中,为 NAT 选择“Public interface connected to the Internet”,并复选“Enable NAT on this interface”。
服务器端的配置告一段落,现在回到客户端计算机添加 VPN 连接,VPN 类型为 SSTP(安全套接字隧道协议),并允许“Microsoft CHAP Version 2(MS-CHAP v2)”协议。
现在启动 VPN 连接,便可无限畅游国际互联网。连接 VPN 用户请确认是否允许进行远程连接。如果遇到其他错误,可参考“Troubleshooting common VPN related errors”。