你好,StackOverflow社区
我想创建一个在PC上执行时收集信息的skript。
我目前正在推出新版本的资产管理工具"PAS“。该过程包括许多可能由skript执行的任务。
我想在开始安装之前检查的详细信息是:-域名-用户名-域名- PC的域名-视窗版本和位版本(32对64) -是否安装了.NET框架4或更高版本?(哪个版本)-使用哪个MS Office版本?-我们的程序由许多.dll的->组成。我想将我们最新的软件包与已安装的软件包进行比较,并收到一个“过时”列表。
一个skript会节省我很多时间,因为我需要在几百台PC上执行上面的操作。
不幸的是,我没有太多的编程知识,但我绝对愿意阅读/学习需要。我需要知道的是,它是否可以实现,以及什么是创建这样一个脚本的好媒介(.bat?)。我真的不知道从哪里开始。
也许有人能给我一个提示,从哪里开始?:)
首先要感谢大家!
干杯,格雷格
发布于 2013-12-06 18:43:36
好的,我进一步了解了如何检查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:...and输出(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:完成!
版本检查Micro Focus 5:完成!
版本和位检查窗口:完成!
检查域名:打开!(%userdomain%在cmd中有效,但在我的脚本中不起作用)
检查当前用户域名:打开!(还不知道是怎么回事)
检查正在运行的SQL实例:打开!("sqlcmd -L“在cmd中有效,但在我的脚本中不起作用。我在这里有一个非常奇怪的行为。在CMD中:当我使用sqlcmd -l时,它不工作,使用sqlcmd -L大写字母时,它按预期工作。奇怪的是,我的印象是语法不区分大小写。当我在批处理文件中使用sqlcmd -L命令时,它会生成一个很长的中文符号字符串,并且以下所有任务都不会被执行;当我使用上面列出的代码中的"sqlcmd -L“时,它不会在我的文件中生成输出)
检查c:\pas2\local是否存在,如果不存在则创建目录:我认为它可以工作:)
当我解决了上面的一些问题后,我会重新评论。如果你们对改进我的脚本有什么建议,请不要犹豫,请发表意见!谢谢!
干杯Greg
发布于 2013-12-06 19:02:41
更新域名:错误是,我忘记在%userdomain%前面放echo,而且批处理文件“吃掉”了第一个%符号(为什么?)所以我总是要放两个。批处理文件中正确的工作字符串是:
echo %%userdomain%%>>Version.txt...and在文本文件中,它显示如下:
BRNS...which是我们的领域
https://stackoverflow.com/questions/20288737
复制相似问题