Powershell_script资源抛出错误:“您的会话已过期,请重新登录。”

时间:2015-04-27 21:11:30

标签: powershell chef perforce

我正在尝试使用Chef从Perforce中提取文件,方法是从PowerShell脚本调用p4 sync。正如标题所示,我被这个失败所困扰:“你的会话已经过期,请再次登录。”根据我收集的内容,它与通过Chef运行PowerShell脚本的方式有关(使用Invoke-Command?)

这就是我所拥有的工作:(

powershell_script 'P4Sync' do
    cwd "C:\\Program Files\\Perforce"
    code <<-EOH
        &".\\p4.exe" set P4PORT=server:1234
        &".\\p4.exe" set P4USER=AUTOMATION_USER
        set shallNotPass 'AUTOMATION_USER_PASSWORD_TICKET'
        &".\\p4.exe" -d c:\\temp -P $shallNotPass client -o | &".\\p4.exe" -P $shallNotPass client -i
        set  rootdir '//root/scripts'
        &".\\p4.exe" -P $shallNotPass sync $rootdir/script.bat
        &".\\p4.exe" -P $shallNotPass sync $rootdir/script.sh
    EOH
end

我使用过的其他powershell_script资源( 正在工作)只涉及PowerShell cmdlet,而不涉及外部可执行文件。

任何建议将不胜感激!此外,如果您愿意共享我可能自己发现此信息的任何其他资源,那么它也会有所帮助。我花了不少时间在这个错误上搜索互联网,并且没有太多运气。

1 个答案:

答案 0 :(得分:1)

错误消息是Perforce身份验证失败,并表明您的AUTOMATION_USER_PASSWORD_TICKET存在问题。如果这实际上是一张票(它应该看起来像是一个哈希而不是明文),问题很可能是它已过期 - 默认情况下,登录票只在用于获取它的“p4登录”命令后的12小时内有效。

有关票证如何工作的更多信息,请参阅“p4登录”的文档:

http://www.perforce.com/perforce/r15.1/manuals/cmdref/p4_login.html

最简单的解决方案可能是将AUTOMATION_USER置于具有无限超时的组中,然后重新运行“p4 login”以获取新票证(永不过期)并将其放入脚本中。

相关问题