.net Windows系统脚本编制建议+;程序设计
我刚得到一个项目,我必须在Windows操作系统上执行以下操作:.net Windows系统脚本编制建议+;程序设计,.net,ruby,powershell,scripting,ironpython,.net,Ruby,Powershell,Scripting,Ironpython,我刚得到一个项目,我必须在Windows操作系统上执行以下操作: 检测有多少个驱动器(C:D:E: …等)连接到电流 系统 系统标签是什么 每卷 有多少存储空间 (使用和免费)用于每个 驱动力 每个驱动器的格式是什么 (NTFS/FAT32) 有多少文件 在给定目录中的任何一个 驱动力 每个文件大小有多大 文件处理(每个文件都是 大约2GB)我需要做很多事情 类C的fseek()和二进制数据 解析,以及从大到小的endian 转变必须写一些逻辑 代码也是 我是一名经验丰富的C\C++程序员,但我
PS:PowerShell是否打算取代VBScript?另外,既然C#、WPF和Powershell已经存在,那么VB.net到底有什么好处呢 除了列表中的第七项之外,使用Powershell和WMI应该很简单,因为这可能是Powershell的自然域。因为前六个列表项不需要其他语言,所以最后一个列表项使用什么语言并不重要。您可能可以使用PS(尽管我从未使用过IO)或任何适合您的工具 至于你的第二个问题:VBScript可能不会在不久的将来消失,因为在编写用于部署的小脚本时,Windows脚本主机仍然是一个更安全的选择,因为它自98年以来就预装在每个Windows上。Powershell仅包含在Windows 7及更高版本中。话虽如此,Powershell的目标无疑是为了自动化而淘汰WSH和CMD,因为它提供了与上述功能相同的功能以及更多功能(如easy.NET和WMI访问)
另一方面,VB.NET是Microsoft销售的主要.NET语言之一。它与VBScript几乎没有任何关系,也不是Powershell或WPF的竞争对手(见鬼,这是完全不同的技术)。你可能会看到与C语言的一些趋同,因为这两种语言似乎仍在努力寻找它们的目标市场。尽管如此,当你是一名VB程序员时,VB.NET仍然是切换到.NET的最简单的选择,因为微软不想因为创建了.NET而失去很多VB.NET。你可以在IronPython | IronRuby或Powershell中实现这一点。我推荐IronPython,因为它是一种真正的语言(比C#甚至Java都旧),有很多支持和对您需要的.NET API(甚至是COM API)的完全访问
我建议您阅读这篇回答您确切问题的文章:PowerShell可以轻松处理1-6。第7项可能可以在PowerShell中完成,但根据具体情况,可能会有更好的选项
有关学习PowerShell的一些好信息,请参阅。我将给您一个不受欢迎的答案,因为没有其他人添加它:Perl
如果您作为一名C/C++程序员熟悉Win32 API,那么Perl可能是更简单的方法。它有用于访问Win32 API的模块,对于C/C++程序员来说,Perl非常容易跟上速度。Perl过去一直为我做这项工作。至于Perl,Ruby也可以访问所有Win32 API和WMI函数。Powershell被设计为Windows的自动化平台。当然,Ruby、Python、Perl、VBScript等都可以完成这项工作,为什么不选择最适合这项工作的工具呢。 以下是获取一些基本驱动器信息的方法:
$drives = Get-WmiObject -Class Win32_LogicalDisk | ? {$_.DriveType -eq 3 }
$drives | select DeviceId,VolumeName,FileSystem,FreeSpace, Size
目录中的文件数
Get-ChildItem c:\path -Recurse | Measure-Object
Get-ChildItem c:\path | Measure-Object
提供有关文件大小的信息
Get-ChildItem c:\path -Recurse | Measure-Object -Average -Sum
-Maximum -Property Length
对于文件处理,您可以使用本机cmdlet,例如获取内容或调用并实例化.Net类型。我认为PowerShell非常适合此任务,因为它针对此类系统信息检索进行了优化。与C#IMO相比,WMI在PowerShell中非常易于使用(我现在是C#dev)。见鬼,让我们看看这在PowerShell中有多容易:
#1,2, 3 and 4
PS> Get-WmiObject Win32_LogicalDisk |
>> Format-Table Name, VolumeName, FileSystem, Size, FreeSpace -auto
Name VolumeName FileSystem Size FreeSpace
---- ---------- ---------- ---- ---------
C: NTFS 160038907904 100353536000
D:
E:
F: PDC2008 NTFS 160039239680 40155922432
V: Vista NTFS 250056704000 33944559616
#5
PS> dir <path> -r | where {!$_.PSIsContainer} | Measure-Object
#6
PS> dir <path> -r | where {!$_.PSIsContainer} |
>> Format-Table Fullname, Length -auto
#1,2,3和4
PS>获取WmiObject Win32_LogicalDisk|
>>格式化表名、卷名、文件系统、大小、自由空间-自动
名称VolumeName文件系统大小释放空间
---- ---------- ---------- ---- ---------
C:NTFS 1600389079004 100353536000
D:
E:
F:PDC2008 NTFS 160039239680 40155922432
V:Vista NTFS 25005670400033944559616
#5
PS>dir-r |其中{!$\uu.PSIsContainer}|度量对象
#6
PS>dir-r | where{!$uu.PSIsContainer}|
>>格式表全名,长度-自动
PowerShell还可以通过使用.NET框架轻松处理#7。有关PowerShell中fseek风格编程的示例,请从第139行开始查看。Python是一种比C#或Java更古老的语言,但IronPython肯定不是。即使它变老了,也不会自动让它变好(我也不是说它会让它变得更糟)。还有,我不确定你所说的“真实”语言是什么意思。是的,PowerShell也是真实的。这当然不是虚构的。:)