来自Python的集群,节点

时间:2017-11-02 20:42:49

标签: python-2.7 python-3.x powershell powershell-v3.0 powershell-remoting

我有一个群集的DNS名称,该群集上几乎没有运行服务的节点。 我首先写了powershell脚本,它给了我提供服务的节点及其状态。脚本使用Get-ClusterResource命令 然后我编写了执行此PowerShell的python脚本。 当我运行powershell脚本时,我得到节点及其状态。但是当我从python中删除powershell脚本时,我收到的错误是:

Get-ClusterResource : The term 'Get-ClusterResource' is not recognized as the 
name of a cmdlet, function, script file, or operable program. Check the 
spelling of the name, or if a path was included, verify that the path is 
correct and try again.

我尝试使用import-module failovercluster但未获得成功。

请让我知道我错在哪里,如果不可能,那么我正在寻找python lib来实现同样的目标。

关于群集的我很少有人理解: - 我们无法create PSSession群集。

我正在以这种方式运行powershell脚本:

subprocess.check_output(["powershell.exe", '-ExecutionPolicy', 'Unrestricted', self.win_cluster_handling() + " -Cluster_Name " + self.cluster_name + " -ClusterNode_Action Stop-Cluster" + " -Service_Name " + self.service_name + " -Username " + self.username + " -Password " + self.password])

2 个答案:

答案 0 :(得分:1)

您是否在脚本中加入了Import-module FailoverClusters

看看这个question

一个建议是更新到PowerShell v3.0或更高版本。

答案 1 :(得分:0)

重新阅读您的描述,问题发生在您从Python调用的Powershell脚本中。在你的Powershell脚本中,你可以编写一些行来确定脚本是否运行时使用相同的环境varialbes,PATH等,就像正常运行Powershell一样。

例如,如果您从Powershell运行:“Get-ChildItem Env:”,它会为您提供一个环境变量列表。您可以在powershell脚本中包含相同内容,并检查脚本中运行的那些是否相同或者是否缺少某些内容。