首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rundeck无法使用import-module执行powershell脚本

rundeck无法使用import-module执行powershell脚本
EN

Stack Overflow用户
提问于 2018-06-25 23:16:43
回答 1查看 1.3K关注 0票数 0

我在windows2012目标节点上通过rundeck (内联)运行几个python脚本。这些脚本过去在本地运行,但现在正在迁移到rundeck的过程中。

其中一个python脚本打开一个子进程,以调用powershell脚本并读取输出。

代码语言:javascript
复制
import subprocess
CMD = [r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe ', '-File', r'C:\Users\Osman\Code\mop.ps1']
cmd = CMD[:]
cmd.append('arg1')
cmd.append('arg2')
cmd.append('arg3')
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
r = p.communicate()
print(r)

mop.ps1是

代码语言:javascript
复制
Import-Module MSOnline
$domain = $args[0]
$login = $args[1]
$pass = $args[2]
$EPass = $pass | ConvertTo-SecureString -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PsCredential($login, $EPass)
Connect-MsolService -Credential $Cred
$TenantId = Get-MsolPartnerContract -Domain $domain | Select-Object -ExpandProperty TenantId
Get-MsolAccountSKU -TenantId $TenantId | select SkuPartNumber,ActiveUnits,ConsumedUnits | ConvertTo-Csv -NoTypeInformation

这部分代码总是无法执行,如果我检查stderr,它会说:

代码语言:javascript
复制
        Connect-MsolService : Exception of type 'Microsoft.Online.Administration.Automation.MicrosoftOnlineException' was thrown.
At C:\Users\Osman\Code\mop.ps1:7 char:1 
+ Connect-MsolService -Credential $Cred

我不确定它为什么会失败。我试过了

代码语言:javascript
复制
Import-Module MSOnline -Verbose

我可以看到Cmdlet正在加载。我尝试在C:\WINDOWS\system32\WindowsPowerShell\v1.0\位置创建profile.ps1文件。

如果我在本地执行代码,一切都会正常工作。我尝试运行一个常规的测试.ps1文件'disk.ps1‘,而不是我的代码,它工作得很好,因为它不加载任何模块:

代码语言:javascript
复制
get-WmiObject win32_logicaldisk -Computername $env:computername

要让带有模块的脚本正常运行,有什么变通方法?stdout始终为空。

Node注册为64位,因此我尝试将cmd更改为

代码语言:javascript
复制
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe 

我尝试将profile.ps1复制到那里,将模块复制到那里,但仍然无法通过rundeck工作。

EN

回答 1

Stack Overflow用户

发布于 2018-06-27 23:49:49

根据您的描述,由于您能够在直接从服务器运行脚本时获得有效输出,因此您的错误可能与您用于登录MS-Online的“Second Hop”有关。目前Rundeck Python-Winrm plugin支持Basic、ntlm或CredSSP鉴权,CredSSP鉴权可以让您成功进行第二跳。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51026810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档