Powershell脚本运行缓慢

2024-04-26

我正在编写一个脚本来检查大约 15 个远程服务器上的版本,但该脚本的执行时间比我预期的要长得多。

$listServers = @("compName1", "compName2", "compName3", ... "compName15")

"" | Out-File C:\temp\javaVersion.txt
"" | Out-File C:\temp\javaVersionLog.txt
$cred = Get-Credential

ForEach ($server in $listServers) 
{
     Measure-Command {$javaVersion = Invoke-Command -ComputerName $server -Credential $cred -Authentication Kerberos -ScriptBlock {Get-WmiObject -Class Win32_Product -Filter "Name like 'Java [0-9]%'" | Select -ExcludeProperty Version}} -ErrorAction SilentlyContinue -ErrorVariable errorOutput
     $errorOutput | Out-File C:\temp\javaVersionLog.txt -Append
     $server + $javaVersion | Out-File C:\temp\javaVersion.txt -Append
 }

根据 Measure-Command 输出,这大约需要 21 秒才能完成。我是否有理由错过该脚本需要这么长时间才能完成?

Edit:

在被其他问题分散注意力后,我终于完成了剧本。

Start-Transcript C:\temp\javaVersion.txt
$listServers = @("compName1", "compName2", "compName3", ... "compName15")
$javaVersVerbose = ""

Invoke-Command -ComputerName $listServers -ScriptBlock {
    $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $_);
    $javaKey = $registry.OpenSubKey('SOFTWARE\JavaSoft\Java Runtime Environment');
    $javaVers = $javaKey.GetValue('CurrentVersion');
    $javaVersVerbose = $javaKey.GetValue('Java' + $javaVers.Substring(2, 1) + 'FamilyVersion');
    $nameKey = $registry.OpenSubKey('SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName');
    $name = $nameKey.GetValue('ComputerName');
    $name + " " + $javaVersVerbose | echo
} -ErrorAction SilentlyContinue -ErrorVariable errorOutput

$errorOutput | echo

Write-Host -NoNewLine 'Press any key to continue...'
$null = $Host.UI.RawUI.ReadKey('NoEcho, IncludeKeyDown')

您不需要循环或串行执行此操作。invoke-command需要收集ComputerNames,并且可以并行运行请求。

$listServers = @("compName1", "compName2", "compName3", ... "compName15")
Invoke-Command -throttlelimit 4 -ComputerName $listServers -Credential $cred -Authentication Kerberos -ScriptBlock {Get-WmiObject -Class Win32_Product -Filter "Name like 'Java [0-9]%'" | Select -ExcludeProperty Version}} -ErrorAction SilentlyContinue -ErrorVariable errorOutput

然而,正如 Tim Ferrell 所指出的,您可以使用 Get-WMIObject 远程 ping 服务器,如果您将其作为一项作业来执行,它将并行运行多个请求。

Get-WMIObject Win32_Product  -Filter "Name like 'Java [0-9]%'" -computername $listServers -throttlelimit 4 -asjob |select -excludeproperty version

然后使用 Job cmdlet 接收结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell脚本运行缓慢 的相关文章

随机推荐

  • 扩展《斯巴达克斯》中的产品模型

    我正在尝试使用我在 items xml 中创建的新属性来扩展产品模型 但我似乎无法在 Spartacus 前面获取它 我添加了一个带有以下代码的product model ts文件 import Product as CxProduct f
  • Nativescript ios 中闪屏后显示白屏

    在 Nativescript ios 中 启动屏幕后几秒钟显示白屏 这种情况仅发生在我们的项目中 但示例项目运行良好 我检查了模拟器和 iPhone 5 iPhone 6 iPad mini 所有设备都显示白屏 我将 Nativescrip
  • 如何按会计季度分组的日期计算平均值

    我有下表 Date Country Class Value 6 1 2010 USA A 45 6 1 2010 Canada A 23 6 1 2010 Brazil B 65 9 1 2010 USA B 47 9 1 2010 Can
  • 从只读 couchdb 复制

    我有一台服务器 其中包含一个 couchdb 数据库 其中包含我的应用程序所需的信息 它包含几兆字节的内容 一些每天都会变化的文档 添加最新新闻 删除旧文档 更新一些文档 应用程序会尽可能与服务器数据库同步 以便离线使用此信息 然而 这些信
  • 根据选项元素中的文本进行选项选择

    我试图在下拉列表中选择将文本值传递到函数中的选项 获取其值 然后选择具有该值的选项 你能明白为什么这不起作用吗 function selectAndAddToCart value console log The selectAndAddTo
  • 颤动导航到新屏幕不起作用

    我正在构建一个登录屏幕 将数据传递到主屏幕 当我单击登录按钮时 什么也没有发生 没有错误 但也没有发送到新屏幕 这是按钮代码 Widget submitButton return Container margin EdgeInsets al
  • 如何在 Dockerfile 中添加除隐藏目录(如 .git)之外的所有文件/目录

    我们经常做的一件事就是将所有源代码打包在Dockerfile当我们构建 Docker 镜像时 ADD app 我们怎样才能避免包括 git目录以简单的方式 我尝试使用 Unix 方式来处理这个问题ADD app 完整样本 docker bo
  • Java中引用传递的疑惑

    所以我在读这个帖子 https stackoverflow com questions 40480 is java pass by reference和回复编号 2 在该示例中 调用该方法后 地址 42 name 处的 Dog 值是否更改为
  • Spring Hibernate:重新加载实体映射

    在 Web 应用程序中 我们使用 Spring 3 2 和 Hibernate 4 1 1 并实现类似插件的架构 可以在运行时添加和删除插件 对于每个模块 我们定义了一个单独的类加载器 并在 spring 上创建单独的子应用程序上下文 完整
  • 如何使用python中的turtle模块绘制颜色环

    我有下面的代码 它应该在一个圆圈周围绘制一圈颜色 但如果在移动到下一个之前打印和更改 8 次 则只有一种颜色 import turtle def drawCircle colorList radius for color in colorL
  • Win32 DrawText 行高

    我正在调用 Win32DrawText函数将一些文本输出到设备上下文中 文本很长 可以很好地换行到第二行 问题是我需要稍微减少行之间的间距 我想减少行高 关于如何做到这一点有什么想法吗 我只想打电话DrawText两次 每行一次 但随后我必
  • 检查 enum 是否已过时

    我如何检查是否enum如果标记为过时 public enum MyEnums MyEnum1 Obsolete How can you know that I m obsolete MyEnum2 MyEnum3 现在在运行时 我需要知道哪
  • 递归相对于 git rm -r [文件名] 意味着什么

    我正在学习一些 git 教程 但不明白运行之间的区别 git rm path to file and git rm r path to file 递归到底是什么意思 提前致谢 从 git rm 手册页 主目录名称 例如dir去除dir fi
  • 对“lzma_code”的未定义引用

    我尝试打包我的应用程序并静态链接所有库 但我收到此错误 Makefile 如下所示 CC gcc INCPATH I home johnny Application FileBasedReG include RealityGrid LIBS
  • 可以在 UUID 列上创建索引吗?

    是否可以在 Cassandra 中的 UUID TIMEUUID 列上创建索引 我正在测试一个模型设计 该设计在 UUID 列上有一个索引 但对该列的查询始终返回找到的 0 行 我有一个这样的表 create table some data
  • 在VS2008中使用wpf透明png

    我想在 WPF VS2008 中制作一个半透明的 UI 因此我将表单设为透明 并想在其顶部显示一个半透明 png 其中包括 孔 如何显示半透明png 半透明 意味着它有可以看到的孔 另外 我如何在 C 中完成此操作 而不使用 WPF Tha
  • 未找到“GuzzleHttp\Client”类

    我同时使用Guzzle http guzzle readthedocs org en latest 并首次推出 Codeigniter 3 0 我也承认我是第一次使用 php 命名空间 我正在尝试根据文档中提供的示例使用 Guzzle 发出
  • GenJar 更换或更新?

    GenJar 是一个专门的 Ant 任务 它基于类依赖关系而不是简单地基于目录的内容构建 jar 文件 http genjar sourceforge net http genjar sourceforge net 确实有用 但是项目好像不
  • Django 无法导入设置

    我正在尝试在我的项目中使用 django admin dbshel l 任何其他 cmd 都会给出相同的结果 我得到了 You must either define the environment variable DJANGO SETTI
  • Powershell脚本运行缓慢

    我正在编写一个脚本来检查大约 15 个远程服务器上的版本 但该脚本的执行时间比我预期的要长得多 listServers compName1 compName2 compName3 compName15 Out File C temp jav