2017-05-30 117 views
0

我正在配置Jenkins作业,并且Jenkins从站安装在Windows服务器(A)中。我想将项目生成输出文件夹复制到另一个Windows服务器(B)。将文件复制到PowerShell中的远程服务器

我可以在服务器A上手动执行批处理文件,并带有以下内容。

powershell -executionpolicy remotesigned -Command Copy-Item "C:\Jenkins\workspace\DEV_Build\DEPLOY\UAT\build" -Destination "\\SYDUATAPP01\E$\build" -recurse 

然而,当我通过詹金斯执行此批处理文件,我得到

Access is denied 
+ CategoryInfo   : NotSpecified: (:) [Copy-Item], UnauthorizedAcces 
    sException 
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.Pow 
    erShell.Commands.CopyItemCommand 

感谢您的帮助.....如果通过PowerShell是不可能的一个错误“拒绝访问”,我会想知道我有什么其他选择在我的詹金斯工作

+0

尝试通过目标文件系统::“$ yourpath” – guiwhatsthat

回答

0

@Gergard,非常感谢您的帮助。我试着把提供的代码作为管理员来运行。但是,没有任何工作。执行政策被remotesigned。

最后下面的步骤解决了我的问题;

  • 我在我的windows远程从站上安装了Powershell插件(1.3)。 Powershell 1.3,使用“ByPass”策略执行

  • 并添加了从PowerShell到复制项目的步骤。

    复制项目“源路径” -Destination“\目标路径” -recurse

  • 上述步骤没有解决问题,还抱怨未经授权的。

  • 然后我配置jenkins远程过程 - >属性 - >以管理员帐户运行。

这解决了这个问题,现在我能够成功地复制文件。

1

至于管理员复制文件,检查是否有-executionpolicy设定为预期

powershell get-executionpolicy 

如果不是那么作为管理员,运行:

powershell set-executionpolicy remotesigned -force 

然后我不是100%肯定,为什么你要运行这个作为一个批处理文件,而只是将其保存为名为.ps1文件。

Copy-Item -Path "C:\Jenkins\workspace\DEV_Build\DEPLOY\UAT\build" -Destination "\\SYDUATAPP01\E$\build" -recurse 

,你也可以使用-Force -PassThru -Verbose

如果你仍然想运行批处理文件,然后只需运行

powershell Copy-Item -Path "C:\Jenkins\workspace\DEV_Build\DEPLOY\UAT\build" -Destination "\\\SYDUATAPP01\E$\build" -recurse 

编辑运行脚本作为管理员,您可以将其复制到脚本的最顶端。它基本上只是创建一个以管理员身份启动批处理的VBS文件。最初它会弹出UAC提示符,但它是一次处理,从那里它将每次都以管理员身份运行脚本。

@echo off 
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 
    if '%errorlevel%' NEQ '0' (
    echo Checking privileges. 
    goto UPrompt 
    ) else (goto Admin) 
:UPrompt 
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\Admin.vbs" 
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\Admin.vbs" 

    "%temp%\Admin.vbs" 
    exit /B 
:Admin 
    if exist "%temp%\getadmin.vbs" (del "%temp%\Admin.vbs") 
    pushd "%CD%" 
    CD /D "%~dp0" 
:----------------- Copy the rest of your Batch below this line------ 
+0

我在FROM和TO服务器执行“powershell get-executionpolicy”我复制文件。这两个命令都返回“Unrestricted”。按照您的建议修改了批处理命令,其中包含三个反斜杠。现在它发出“Copy-Item:访问路径'\\\ SYDUATAPP01 \ E $ \ mdh'被拒绝。” – Anuruddha

+0

而作为管理员,我将executionpolicy设置为Bypass,仍然获得您需要以管理员身份运行cmd的访问被拒绝 – Anuruddha

+0

。右键单击cmd.exe并选择“以管理员身份运行” –

相关问题