随着Windows Server 2012的发布,PowerShell作为脚本语言,将成为命令行接口的新规范。拥有超过2300条命令的PowerShell可以更容易的实现任务自动化,为管理员节省宝贵的时间。
但是,当管理员遇到PowerShell错误时要怎么处理?如何才能将其修复?PowerShell专家Don Jones将通过处理一些常见的PowerShell错误来指导大家如何解决这些问题。
为什么PowerShell命令能够在本地正常运行,却无法在远程运行?
对于管理员来说,远程处理是在远程计算机上运行命令的***方式。Jones甚至将PowerShell远程处理功能称为管理的“未来方式”。但Windows Server 2012的远程处理有几个困难需要克服。
解决此问题的方式有多种。首先要确认远程运行的命令是否存在于远程的服务器中。另外当你运行命令时,时间的准确性也相当重要。***还需要检查一下这条命令是否是外部命令,避免远程服务器因此而出错。
如果所有方法都无法奏效,问题可能就是Jones所说的“环境障碍”,这需要单独的步骤进行排错。
为何无法比较 PowerShell的变量内容?
无法比较PowerShell变量的内容有多种原因。首先,某些PowerShell命令返回的结果将多于你的请求。例如,Dir命令可以返回多个对象和多种类型的对象。其次,一些命令,如$file,几乎总是会返回多种类型的对象,而像-like这样的PowerShell运算符则不能针对多个对象运行。
要解决这个问题,可以通过写一条命令来枚举文件,这样可以让用户每次只比较一个对象。如果你一直在使用PowerShell,可以有多种方式来做到这一点。
一种方式是构造法(如使用Foreach),它可以接受多个对象,然后逐个进行比较。另一种方法则是使用命令的方式(非脚本方式)来进行处理。
为什么当我尝试访问一个文件时,PowerShell会出错
如果你在试图访问一个文件时,总是遇到问题,部分原因可能是使用PowerShell访问文件的方式有问题。在这个问题上要牢记的最重要的一点就是大多数PowerShell命令的输出是对象,而输入参数可能无法接受整个对象。
若要解决此问题,请务必检查命令变量的属性以及它们包含的数据是你真正需要的。例如,使用$file是要获得类似Fullname提供的文件路径还是以某种形式将名称和路径进行组合呢?
实际上,到***你在命令中实际需要或查询的只是其中的一到两个属性。