Powershell 在启动作业脚本块内时,远程获取WMIOObject调用失败
好吧,我试着想办法解决这个问题,但我想是时候问一下互联网了。我想知道这是一个bug还是什么 我正在尝试对多台计算机启动作业,以确定它们上驻留的数据库名称 我的Computer1系统设置为:Powershell 2.0、Windows 2k3 Enterprise x64 在Computer1上,我可以运行:Powershell 在启动作业脚本块内时,远程获取WMIOObject调用失败,powershell,jobs,powershell-2.0,hung,start-job,Powershell,Jobs,Powershell 2.0,Hung,Start Job,好吧,我试着想办法解决这个问题,但我想是时候问一下互联网了。我想知道这是一个bug还是什么 我正在尝试对多台计算机启动作业,以确定它们上驻留的数据库名称 我的Computer1系统设置为:Powershell 2.0、Windows 2k3 Enterprise x64 在Computer1上,我可以运行: Start-Job -scriptblock {gwmi -query "select * from win32_computersystem" -ComputerName "Compute
Start-Job -scriptblock {gwmi -query "select * from win32_computersystem" -ComputerName "Computer2"}
工作将永远停留在“运行”状态。但如果在shell中的作业脚本块之外运行相同的命令,则不会
我用本地管理员(vs我的域)凭据尝试了这个精确的设置,但结果相同。因为某种原因,它对我不起作用
我尝试过构建一个不使用gwmi的自定义WMI dotnet对象,但得到了相同的结果
-asjob参数?:
这不是一个解决办法
所以我唯一没有尝试过的是,也许我必须指定authority参数 我为此使用Invoke命令-asJob:
PS C:\> Invoke-Command -ComputerName "WM2008R2ENT" -ScriptBlock {gwmi -query "select * from win32_computesystem"} -AsJob
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Running True wm2008r2ent gwmi -query "select * ...
PS C:\> Get-Job
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Completed True wm2008r2ent gwmi -query "select * ...
PS C:\Développements> Receive-Job 1
Domain : dom.fr
Manufacturer : VMware, Inc.
Model : VMware Virtual Platform
Name : WM2008R2ENT
PrimaryOwnerName : Utilisateur Windows
TotalPhysicalMemory : 683139072
PSComputerName : wm2008r2ent
您可以用计算机列表替换计算机名称。不要再次尝试在脚本块中使用的cmdlet中编写“-Computername”
(编辑) 我尝试使用命令行,它适用于从Windows 7(64位)到W2K3(32位)的客户端 我的客户端不在服务器的域中,我使用域管理员凭据 您是否使用32位Powershell或64位Powershell进行了测试
您是否尝试停止远程计算机上的WMI服务并清理WMI数据库,当您在WMI服务器上进行了太多测试(例如,使用事件)时,它有时是合适的。我使用Invoke命令-asJob来执行此操作:
PS C:\> Invoke-Command -ComputerName "WM2008R2ENT" -ScriptBlock {gwmi -query "select * from win32_computesystem"} -AsJob
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Running True wm2008r2ent gwmi -query "select * ...
PS C:\> Get-Job
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Completed True wm2008r2ent gwmi -query "select * ...
PS C:\Développements> Receive-Job 1
Domain : dom.fr
Manufacturer : VMware, Inc.
Model : VMware Virtual Platform
Name : WM2008R2ENT
PrimaryOwnerName : Utilisateur Windows
TotalPhysicalMemory : 683139072
PSComputerName : wm2008r2ent
您可以用计算机列表替换计算机名称。不要再次尝试在脚本块中使用的cmdlet中编写“-Computername”
(编辑) 我尝试使用命令行,它适用于从Windows 7(64位)到W2K3(32位)的客户端 我的客户端不在服务器的域中,我使用域管理员凭据 您是否使用32位Powershell或64位Powershell进行了测试
您是否尝试停止远程计算机上的WMI服务并清理WMI数据库,当您在WMI服务器上进行了太多测试(例如,使用事件)时,它有时是合适的。
启动作业
用于在本地运行后台作业。我猜您在上面的代码示例中是指(并且实际使用)Invoke命令
?谢谢您的评论。不,我不是说调用命令。我正在扫描的大多数计算机没有启用WinRM,但它们确实启用了WMI。我想对远程计算机执行WMI查询。我尝试了您的示例,作业成功完成。Start job
用于在本地运行后台作业。我猜您在上面的代码示例中是指(并且实际使用)Invoke命令
?谢谢您的评论。不,我不是说调用命令。我正在扫描的大多数计算机没有启用WinRM,但它们确实启用了WMI。我想对远程计算机执行WMI查询。我尝试了您的示例,作业成功完成。感谢您的评论。我正在扫描的大多数计算机没有启用WinRM,但它们确实启用了WMI。我想对远程计算机执行WMI查询。我在2008 x64系统上测试了上述代码,它正常工作。不幸的是,我真的需要在我的2003 x64机箱上运行:(您可以在其上安装Powershell V2软件包,您将获得WinRM服务。感谢您的建议,但我们讨论的是1300多台计算机可在其上安装该服务。除非其他人能够提出修复建议,否则我将努力寻找一个可供暂时使用的2008 box。我将在我的上下文中测试您的脚本行。)(客户端:Windows Seven 64位,服务器W2K3 R2 32位)它是有效的。远程计算机上的WMI服务可能会遇到一些问题,我用这种方式编辑我的答案。谢谢你的评论。我正在扫描的大多数计算机没有启用WinRM,但它们确实启用了WMI。我想对远程计算机执行WMI查询。我在2008 x64系统上测试了上述代码,代码正常工作。不,抱歉nately,我真的需要在我的2003 x64机箱上运行:(您可以在其上安装Powershell V2软件包,您将获得WinRM服务。感谢您的建议,但我们讨论的是1300多台计算机可在其上安装该服务。除非其他人能够提出修复建议,否则我将努力寻找一个可供暂时使用的2008 box。我将在我的上下文中测试您的脚本行。)(客户端:Windows Seven 64位,服务器W2K3 R2 32位),它可以工作。远程计算机上的WMI服务可能有问题,我用这种方式编辑我的答案。