用于检查工作站详细信息和软件组件的脚本

时间:2013-11-29 15:13:05

标签: windows components settings

Hello StackOverflow社区

我想创建某种类型的skript,在执行时在PC上收集信息。

我目前正在推出新版本的资产管理工具“PAS”。该过程包括许多可能由skript执行的任务。

我要在开始安装之前检查的详细信息是: - 域名 - 用户域名 - PC的名称 - Windows版本和位版本(32对64) - 是否安装了.NET Framework 4或更高版本? (哪个版本) - 使用哪个MS Office版本? - 我们的程序由许多.dll组成 - >我想将最新的软件包与已安装的软件包进行比较,并收到“过时”列表。

一个skript会为我节省很多时间,因为我需要在几台PC上安装上述内容...

不幸的是,我没有太多的编程知识,但我绝对愿意阅读/了解需求。我需要知道的是,如果能够实现它,那么创建这样一个skript(.bat?)的好媒介是什么。我真的不知道从哪里开始。

也许有人可以给我一个暗示从哪里开始? :)

非常感谢提前!

干杯, 格雷格

2 个答案:

答案 0 :(得分:0)

好的,我更进了一步,发现了,如何检查cmd中的软件版本并进行测试,它运行正常:

wmic product where "Name like 'Microsoft .Net%'" get Name, Version

(答案在这里找到: Is there a command line command for verifying what version of .NET is installed

因此,由于不知道其他任何事情,我将尝试在批处理(.bat)文件中完成此操作。如果您知道比批处理文件更好的选择方式,请留下您的意见!

所以经过很多谷歌搜索后,我聚集了一些命令包,这将帮助我进行必要的系统查询。

目前脚本如下所示:

@ECHO OFF
CD..
DEL Version.txt
wmic os get name, OSArchitecture>Version.txt
wmic cpu get Name>>Version.txt
wmic netuse get Name>>Version.txt
%userdomain%>>Version.txt
wmic product where "Name like 'Microsoft .Net Framework 4%%'" get Name, Version>>Version.txt
wmic product where "Name like 'Microsoft SQL Server 2008%%'" get Name, Version>>Version.txt
"sqlcmd -L">>Version.txt
wmic product where "Name like 'Micro Focus Server 5%%'" get Name, Version>>Version.txt
if exist C:\PAS2\local goto end else mkdir C:\PAS2\local
end:

...并且输出(Version.txt)如下所示:


Name                                                                       OSArchitecture  
Microsoft Windows 7 Professional |C:\windows|\Device\Harddisk0\Partition2  64-Bit          
Name                                      
Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz  
Name                    
\\brns01\PUBLIC (M:)    
\\brns01\DISTRIBU (N:)  
\\brns01\DOCUMENT (O:)  
\\brns01\PROJECTS (P:)  
\\BRNS01\PRITRANS (U:)  
\\Brns01\USERS\GN (L:)  
Name                                                 Version    
Microsoft .NET Framework 4.5.1 Multi-Targeting Pack  4.5.50932  
Microsoft .NET Framework 4.5 Multi-Targeting Pack    4.5.50710  
Microsoft .NET Framework 4.5 SDK - DEU Lang Pack     4.5.50710  
Microsoft .NET Framework 4.5 SDK                     4.5.50710  
Microsoft .NET Framework 4 Multi-Targeting Pack      4.0.30319  
Microsoft .NET Framework 4.5.1 RC                    4.5.50861  
Microsoft .NET Framework 4.5.1 RC (DEU)              4.5.50861  
Microsoft .NET Framework 4.5.1 SDK                   4.5.51641  
Microsoft .NET Framework 4.5.1 SDK (Deutsch)         4.5.51641  
Name                                          Version       
Microsoft SQL Server 2008 R2-Setup (Deutsch)  10.52.4000.0  
Microsoft SQL Server 2008 R2 RsFx Driver      10.52.4000.0  
Microsoft SQL Server 2008 R2-Richtlinien      10.50.1600.1  
Microsoft SQL Server 2008 R2 Native Client    10.52.4000.0  
Name                    Version     
Micro Focus Server 5.1  5.107.0047  

当前状态

版本检查.NetFramework:完成!

版本检查MS SQL Server:完成!

版本检查微焦点5:完成!

版本和位检查Windows:完成!

检查域名:打开! (%userdomain%在cmd中工作,但不在我的脚本中)

检查当前用户域名:OPEN! (不知道怎么回事)

检查正在运行的SQL实例:打开! (“sqlcmd -L”在cmd中工作,但不在我的脚本中。我在这里有一个非常奇怪的行为。在CMD中:当我使用语法sqlcmd -l时它不起作用,使用sqlcmd -L [captial Letter]它奇怪的是,我的印象是,语法不区分大小写。当我在批处理文件中使用命令sqlcmd -L时,它会生成一长串的中文符号,并且所有后续任务都不会被执行,当我在上面列出的代码中使用“sqlcmd -L”时,它不会在我的文件中生成输出)

检查是否存在c:\ pas2 \ local和create directory如果它不存在:我认为它有效:)

当我解决了上述一些问题时,我会重新评论。如果你们有改进我的脚本的提示,请不要犹豫,评论!谢谢!

干杯 格雷格

答案 1 :(得分:0)

更新域名: 错误是,我忘了在%userdomain%前面放回声,批处理文件也“吃掉”第一个%符号(为什么?)所以我总是要把它们中的两个。批处理文件中正确的工作字符串是:

echo %%userdomain%%>>Version.txt

...在文本文件中显示如下:

BRNS

...这是我们的域名