I just noticed that there is still an error: Set-Variable: Cannot process command because of one or more missing mandatory parameters: Name.
That is because in *Bash* (Linux) and *MS-DOS* (Windows), you can just type set to get a list of all environment variables. However, in *PowerShell* (cross-platform), the equivalent command is ls Env: (including the colon : at the end!) If you type set in PowerShell, it interprets that as the cmdlet Set-Variable, which expects a mandatory parameter -Name. Fortunately this is not a fatal error for the Jenkins connection, because it's just a debugging statement. -- Amedee On Friday, February 12, 2021 at 11:42:12 AM UTC+1 Amedee Van Gasse wrote: > I'm happy to report that Jenkins works fine with PowerShell 7! > > > I have this in my connection log: > > [02/12/21 10:58:38] [SSH] SSH host key matches key seen previously for > this host. Connection will be allowed. > [02/12/21 10:58:38] [SSH] Authentication successful. > [02/12/21 10:58:50] [SSH] The remote user's environment is: > [91mSet-Variable: [91mCannot process command because of one or more > missing mandatory parameters: Name. [0m > [02/12/21 10:58:53] [SSH] Checking java version of > C:\Users\jenkins/jdk/bin/java > [02/12/21 10:58:57] [SSH] C:\Users\jenkins/jdk/bin/java -version returned > 11.0.10. > [02/12/21 10:58:57] [SSH] Starting sftp client. > [02/12/21 10:58:58] [SSH] Copying latest remoting.jar... > [02/12/21 10:58:59] [SSH] Copied 1,521,553 bytes. > Expanded the channel window size to 4MB > [02/12/21 10:58:59] [SSH] Starting agent process: cd "C:\Users\jenkins" && > C:\Users\jenkins/jdk/bin/java -jar remoting.jar -workDir C:\Users\jenkins > -jar-cache C:\Users\jenkins/remoting/jarCache > Feb 12, 2021 9:59:02 AM org.jenkinsci.remoting.engine.WorkDirManager > initializeWorkDir > INFO: Using C:\Users\jenkins\remoting as a remoting work directory > Feb 12, 2021 9:59:02 AM org.jenkinsci.remoting.engine.WorkDirManager > setupLogging > INFO: Both error and output logs will be printed to > C:\Users\jenkins\remoting > <===[JENKINS REMOTING CAPACITY]===>channel started > Remoting version: 4.5 > This is a Windows agent > WARNING: An illegal reflective access operation has occurred > WARNING: Illegal reflective access by > org.jenkinsci.plugins.envinject.service.EnvInjectMasterEnvVarsSetter to > field java.lang.reflect.Field.modifiers > WARNING: Please consider reporting this to the maintainers of > org.jenkinsci.plugins.envinject.service.EnvInjectMasterEnvVarsSetter > WARNING: Use --illegal-access=warn to enable warnings of further illegal > reflective access operations > WARNING: All illegal access operations will be denied in a future release > Agent successfully connected and online > The Agent is connected, disconnect it before to try to connect it again. > > The An illegal reflective access operation has occurred is probably > something something Java 11, and I always ignore such warnings. > Maybe someone should consider reporting this to the maintainers of > org.jenkinsci.plugins.envinject.service.EnvInjectMasterEnvVarsSetter? :-) > > > This is how I configured the node with Ansible: > > - name: Install Win32-OpenSSH service > win_chocolatey: > name: openssh > package_params: /SSHServerFeature > state: present > ignore_errors: yes > > - name: Install Powershell Core > win_chocolatey: > name: powershell-core > state: present > > - name: Set the default SSH shell to PowerShell > win_regedit: > path: HKLM:\SOFTWARE\OpenSSH > name: DefaultShell > data: C:\Program Files\PowerShell\7\pwsh.exe > > The ignore_errors: yes with openssh is because I use the same Ansible > playbook for Packer (which goes to AWS) and Vagrant (which is for testing > on my local machine), and the local VM already has SSH running and I > haven't bothered yet with debugging that, so I just ignore the error when > Chcoclatey can't install OpenSSH due to port 22 already in use. > > But anyway: for anyone not using Ansible: you need to set the registry key > HKLM:\SOFTWARE\OpenSSH to the full path of pwsh.exe. > Powershell legacy and Powershell Core have a different executable name, > intentionally, so they can be used side-by-side. > > I hope this is useful for anyone. > > -- > Amedee > > > On Thursday, February 11, 2021 at 11:32:53 AM UTC+1 Amedee Van Gasse wrote: > >> That would actually be great and very much appreciated. >> >> >> I've been down the rabbit hole a bit further and found something that may >> be of interest. >> >> From what I've seen from the error, Jenkins sends compound shell commands >> to the node, with "&&" as pipeline chain operator. >> "&&" has the same function in Bash as well as in MS-DOS. >> PowerShell Windows (up to version 5 I guess) doesn't know '&&', there you >> have to use '-and'. >> However, PowerShell 7 (PowerShell Core, the open source cross-platform >> version) does implement pipeline chain operators. >> See >> https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-70?view=powershell-7 >> >> I don't know if that will solve all of the issues with PowerShell, but >> it's definitely worth giving a shot. >> I'll try it out and report back here. >> >> On Wednesday, February 10, 2021 at 8:05:15 PM UTC+1 slide wrote: >> >>> FYI, I started to look at this again and will hopefully have a PR soon. >>> >>> On Tue, Feb 9, 2021, 08:07 Slide <[email protected]> wrote: >>> >>>> That will cause problems, the ssh-agents-plugin is not set up to handle >>>> PowerShell as the default shell. I looked into it a while back but didn't >>>> make good progress. >>>> >>>> On Tue, Feb 9, 2021 at 2:45 AM Amedee Van Gasse <[email protected]> >>>> wrote: >>>> >>>>> FYI PowerShell is the default SSH shell on this machine. >>>>> >>>>> On Tuesday, February 9, 2021 at 10:27:38 AM UTC+1 Amedee Van Gasse >>>>> wrote: >>>>> >>>>>> I got this when connecting to a Windows node, how do I fix this? >>>>>> >>>>>> [02/09/21 10:20:58] [SSH] SSH host key matches key seen previously >>>>>> for this host. Connection will be allowed. >>>>>> [02/09/21 10:20:58] [SSH] Authentication successful. >>>>>> [02/09/21 10:20:59] [SSH] The remote user's environment is: >>>>>> Set-Variable : Cannot process command because of one or more missing >>>>>> mandatory parameters: Name. >>>>>> At line:1 char:1 >>>>>> + set >>>>>> + ~~~ >>>>>> + CategoryInfo : InvalidArgument: (:) [Set-Variable], >>>>>> ParameterBindingException >>>>>> + FullyQualifiedErrorId : >>>>>> MissingMandatoryParameter,Microsoft.PowerShell.Commands.SetVariableCommand >>>>>> >>>>>> [02/09/21 10:21:00] [SSH] Checking java version of >>>>>> C:\Users\jenkins/jdk/bin/java >>>>>> [02/09/21 10:21:01] [SSH] C:\Users\jenkins/jdk/bin/java -version >>>>>> returned 11.0.10. >>>>>> [02/09/21 10:21:01] [SSH] Starting sftp client. >>>>>> [02/09/21 10:21:01] [SSH] Copying latest remoting.jar... >>>>>> [02/09/21 10:21:02] [SSH] Copied 1,521,553 bytes. >>>>>> Expanded the channel window size to 4MB >>>>>> [02/09/21 10:21:02] [SSH] Starting agent process: cd >>>>>> "C:\Users\jenkins" && C:\Users\jenkins/jdk/bin/java -jar remoting.jar >>>>>> -workDir C:\Users\jenkins -jar-cache C:\Users\jenkins/remoting/jarCache >>>>>> At line:1 char:23 >>>>>> + cd "C:\Users\jenkins" && C:\Users\jenkins/jdk/bin/java -jar >>>>>> remoting ... >>>>>> + ~~ >>>>>> The token '&&' is not a valid statement separator in this version. >>>>>> + CategoryInfo : ParserError: (:) [], >>>>>> ParentContainsErrorRecordException >>>>>> + FullyQualifiedErrorId : InvalidEndOfLine >>>>>> >>>>>> Agent JVM has terminated. Exit code=1 >>>>>> [02/09/21 10:21:02] Launch failed - cleaning up connection >>>>>> [02/09/21 10:21:02] [SSH] Connection closed. >>>>>> SSHLauncher{host=' >>>>>> ec2-3-123-229-137.eu-central-1.compute.amazonaws.com', port=22, >>>>>> credentialsId='b56e65e1-beb0-4ad3-bcaa-e9c7aea3c4f8', jvmOptions='', >>>>>> javaPath='', prefixStartSlaveCmd='', suffixStartSlaveCmd='', >>>>>> launchTimeoutSeconds=60, maxNumRetries=10, retryWaitTime=15, >>>>>> sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.ManuallyTrustedKeyVerificationStrategy, >>>>>> >>>>>> tcpNoDelay=true, trackCredentials=true} >>>>>> [02/09/21 10:21:02] [SSH] Opening SSH connection to >>>>>> ec2-3-123-229-137.eu-central-1.compute.amazonaws.com:22. >>>>>> [02/09/21 10:21:03] [SSH] SSH host key matches key seen previously >>>>>> for this host. Connection will be allowed. >>>>>> [02/09/21 10:21:03] [SSH] Authentication successful. >>>>>> [02/09/21 10:21:03] [SSH] The remote user's environment is: >>>>>> Set-Variable : Cannot process command because of one or more missing >>>>>> mandatory parameters: Name. >>>>>> At line:1 char:1 >>>>>> + set >>>>>> + ~~~ >>>>>> + CategoryInfo : InvalidArgument: (:) [Set-Variable], >>>>>> ParameterBindingException >>>>>> + FullyQualifiedErrorId : >>>>>> MissingMandatoryParameter,Microsoft.PowerShell.Commands.SetVariableCommand >>>>>> >>>>>> [02/09/21 10:21:04] [SSH] Checking java version of >>>>>> C:\Users\jenkins/jdk/bin/java >>>>>> [02/09/21 10:21:04] [SSH] C:\Users\jenkins/jdk/bin/java -version >>>>>> returned 11.0.10. >>>>>> [02/09/21 10:21:04] [SSH] Starting sftp client. >>>>>> [02/09/21 10:21:04] [SSH] Copying latest remoting.jar... >>>>>> Source agent hash is D866F0B482DB94F38E49B26B465D5DB5. Installed >>>>>> agent hash is D866F0B482DB94F38E49B26B465D5DB5 >>>>>> Verified agent jar. No update is necessary. >>>>>> Expanded the channel window size to 4MB >>>>>> [02/09/21 10:21:09] [SSH] Starting agent process: cd >>>>>> "C:\Users\jenkins" && C:\Users\jenkins/jdk/bin/java -jar remoting.jar >>>>>> -workDir C:\Users\jenkins -jar-cache C:\Users\jenkins/remoting/jarCache >>>>>> At line:1 char:23 >>>>>> + cd "C:\Users\jenkins" && C:\Users\jenkins/jdk/bin/java -jar >>>>>> remoting ... >>>>>> + ~~ >>>>>> The token '&&' is not a valid statement separator in this version. >>>>>> + CategoryInfo : ParserError: (:) [], >>>>>> ParentContainsErrorRecordException >>>>>> + FullyQualifiedErrorId : InvalidEndOfLine >>>>>> >>>>>> Agent JVM has terminated. Exit code=1 >>>>>> [02/09/21 10:21:10] Launch failed - cleaning up connection >>>>>> [02/09/21 10:21:10] [SSH] Connection closed. >>>>>> connect timed out >>>>>> SSH Connection failed with IOException: "connect timed out", retrying >>>>>> in 15 seconds. There are 2 more retries left. >>>>>> connect timed out >>>>>> SSH Connection failed with IOException: "connect timed out", retrying >>>>>> in 15 seconds. There are 1 more retries left. >>>>>> connect timed out >>>>>> ERROR: Connection is not established! >>>>>> java.lang.IllegalStateException: Connection is not established! >>>>>> at >>>>>> com.trilead.ssh2.Connection.getRemainingAuthMethods(Connection.java:988) >>>>>> at >>>>>> com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPublicKeyAuthenticator.getRemainingAuthMethods(TrileadSSHPublicKeyAuthenticator.java:88) >>>>>> at >>>>>> com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPublicKeyAuthenticator.canAuthenticate(TrileadSSHPublicKeyAuthenticator.java:80) >>>>>> at >>>>>> com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:218) >>>>>> at >>>>>> com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:171) >>>>>> at >>>>>> hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:865) >>>>>> at hudson.plugins.sshslaves.SSHLauncher$1.call(SSHLauncher.java:436) >>>>>> at hudson.plugins.sshslaves.SSHLauncher$1.call(SSHLauncher.java:423) >>>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) >>>>>> at >>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >>>>>> at java.lang.Thread.run(Thread.java:748) >>>>>> [02/09/21 10:24:11] Launch failed - cleaning up connection >>>>>> [02/09/21 10:24:11] [SSH] Connection closed. >>>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Jenkins Users" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/jenkinsci-users/c9df454f-a248-4d20-b677-52870cae84a5n%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/jenkinsci-users/c9df454f-a248-4d20-b677-52870cae84a5n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> >>>> >>>> -- >>>> Website: http://earl-of-code.com >>>> >>> -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/ec5b3fb8-6163-4c42-8a76-d8801f374683n%40googlegroups.com.
