我知道tasklistWindows 中的命令会给出任务名称及其 PID 的列表。还有另一个命令WMIC path win32_process get Commandline确实提供了更详细的信息,但它的输出更加混乱,有时无法预测(因此很难针对它编写模式/正则表达式,尤其是findstr在 MSDOS 中!)
所以,我想知道在 Windows 中,有没有办法直接查询任务管理器来查找图像名称和它的命令行部分?我想如果任务管理器本身可以找到这些信息,那么一定有办法。
我非常希望在批处理脚本中完成此操作,但是如果需要使用更复杂的东西(例如使用 .NET 或 VB),那么示例会很棒!

我的网络上混合了 Win7 和 XP 计算机。每个用户都使用基于 VBS 的登录脚本登录,对于支持它的客户端,我想显示一个信息弹出窗口,如下所示。
如何检测是否使用 VBScript 安装了 Powershell?
我有一个 .bat 文件。我想以编程方式获取 .bat 文件的名称。我怎样才能做到这一点?
这是我的最终目标
"..\lib\nant\nant.exe" -buildfile:nant.build {{pass in name of this file here}}
pause
Run Code Online (Sandbox Code Playgroud) 我正在管理一个网络,他们在这里使用了一些脚本。主要是批处理脚本或 vbscript。这是一个 Windows 环境,主要是 Server 2008 和一些 2003 服务器。
我的问题是我应该同时学习 VBscript 和 Powershell 还是只学习 Powershell?
我想学习如何自动执行某些任务,甚至通过 cli 进行管理,但我不确定 Powershell 是否可以代替 VBscript 执行大多数管理任务。
我的 Windows Active Directory 网络中有 150 台计算机的列表,我试图将文件复制到这些计算机。我想知道是否有人可能有一个脚本,可以通过在文本文件中查找 PC 名称来将文件或快捷方式复制到计算机。
我正在尝试从我的 Windows 机器网络中记录某些信息;我已将它们设置为定期收集此信息,然后我希望将其保存在网络驱动器上的单个 CSV 文件中。我正在使用 VBS 来收集这些数据,在追加模式下使用 OpenTextFile 进行写入。这是否允许多台计算机同时向该文件附加一行?或者还有另一种方法可以做到这一点(除了为每个设备存储一个单独的文件)。
我不在乎订单(我从每个设备收集时间戳)。
我们需要为网络上的每个用户在 hosts 文件中添加一行。我有管理员权限,但不知道 Windows 脚本的第一件事。有人能指出我正确的方向吗?我没有所有机器名称的列表,所以我更喜欢一个脚本来发现网络上的所有机器并进行更新。
我不太确定这在 StackOverflow 上是否会更好,如果您认为它在那里更合适,请随意移动它。
无论如何,问题...
情况
我们目前有大量的 VBScript、DOS 批处理文件和少数 PowerShell 脚本在业务中执行各种任务。
任务范围从确定谁通过 IP 登录到特定机器到相当复杂的文本处理和数据库查询 (SQL Server 2005/2008)
VbScript 确实不是一种很好的语言,尽管它确实有很好的调试支持,PowerShell 好多了,但是(免费)调试支持非常初级,关于批处理文件的说法越少越好
问题
不想开始一场激烈的战争(请客观评论!)我想标准化单一脚本语言,要求是:-
我对你的想法/建议很感兴趣
这是关于在将机器加入域之前在机器上工作的问题,虽然我很想依赖 GPO,但目前这不是一个选项。
在我工作的环境中,防火墙策略是使用来自 Total Endpoint Solution 的第 3 方防火墙应用程序,因此我必须禁用默认的 Windows 防火墙顶部以防止冲突。我使用在想象过程结束时运行的脚本或在我没有重新成像的系统上手动执行此操作。有一段时间,我能够使用以下方法进行管理:
netsh advfirewall set allprofiles state off
Run Code Online (Sandbox Code Playgroud)
但是,由于某种原因,这停止了工作。所以,我发现我需要清除本地安全策略(手动):
Local Security Policy MSC > Windows Firewall with Advanced Security
Right-Click Windows Firewall with Advanced Security - Local Group Policy Object
Clear Policy
Run Code Online (Sandbox Code Playgroud)
这是我用来避免手动执行的脚本:
secedit /configure /db reset /cfg securityprofile
Run Code Online (Sandbox Code Playgroud)
这两个步骤的组合工作了大约一个月,然后,没有明显的原因,它停止工作。
我开始测试注册表黑客来实现我所需要的,它给了我混合的结果。我有两套带有我需要更改的配置文件的密钥;对于本地配置文件:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\PrivateProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\PublicProfile]
"EnableFirewall"=dword:00000000
Run Code Online (Sandbox Code Playgroud)
对于域配置文件:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\DomainProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile]
"EnableFirewall"=dword:00000000
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是本地配置文件在防火墙打开的情况下不断重新生成原始设置。我试过了:
用于测试的旧机器上的结果)很好
a) 应用本地策略注册表黑客
用于测试的旧机器上的结果)很好
a) 使用 …
scripting windows-7 vbscript windows-firewall windows-registry
有人可以提供一些有关 VBS 脚本的帮助吗?
这是我到目前为止修改的内容;
Const GROUP1 = "cn=GROUP1"
Const GROUP2 = "cn=GROUP2"
Const GROUP3 = "cn=GROUP3"
Set wshNetwork = CreateObject("WScript.Network")
Set ObjectUser = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & ObjectUser.UserName)
strGroups = LCase(Join(CurrentUser.MemberOf))
If InStr(strGroups, LCase("GROUP1")) Then
wshNetwork.MapNetworkDrive "L:", "\\servername\\volume1\"
End If
If InStr(strGroups, LCase("GROUP2")) Then
wshNetwork.MapNetworkDrive "M:", "\\servername\volume2\"
End If
If InStr(strGroups, LCase("GROUP3")) Then
wshNetwork.MapNetworkDrive "N:", "\\servername\volume3\"
End If
Run Code Online (Sandbox Code Playgroud)
我不确定检索 LDAP 字符串的最佳和最简单的方法是什么?我也不断收到错误Set CurrentUser = GetObject("LDAP://" & ObjectUser.UserName)。
任何帮助将非常感激。
vbscript ×10
scripting ×4
powershell ×3
batch-file ×2
windows ×2
windows-7 ×2
.net ×1
logging ×1
ms-dos ×1
nant ×1
netlogon ×1
networking ×1
windows-xp ×1