This plugin's main goal is to provide WinRM Operations as Build Step. ### About Following Operations implemented: 1\) Send-File Operation 2\) Invoke-Command Operation ### Job DSL: ``` syntaxhighlighter-pre job { steps { winRMClient { hostName(String hostName) credentialsId(String credentialsId) sendFile(String source, String destination, String configurationName) invokeCommand(String command) } } } For example: freeStyleJob('WinRMClientJob') { steps { winRMClient { hostName('192.168.1.2') credentialsId('44620c50-1589-4617-a677-7563985e46e1') sendFile('C:\\test.txt','C:\\test', 'DataNoLimits') invokeCommand('dir') } } } ``` ### Jenkins Pipeline: ``` syntaxhighlighter-pre winRMClient credentialsId: '549bdb9b-0d36-4c21-948a-ca0a9ef6575f', hostName: '192.168.1.7', winRMOperations: [invokeCommand('dir'), sendFile(configurationName: 'DataNoLimits', destination: 'C:\\test', source: 'C:\\test.txt')] ``` ### Configure WinRM to Use HTTP Configure the WinRM host to enable communication with the PowerShell plug-in through the HTTP protocol. Modify the WinRM configuration by running commands on the WinRM host machine. Can use the same machine as both the WinRM service and WinRM client. **Procedure:** - Run the following command to set the default WinRM configuration values. ***c:\\\> winrm quickconfig*** - (Optional) Run the following command to check whether a listener is running, and verify the default ports. ******c:\\\> winrm e winrm/config/listener****** The default ports are 5985 for HTTP, and 5986 for HTTPS. - Enable basic authentication on the WinRM service. Run the following command to check whether basic authentication is allowed. ***c:\\\> winrm get winrm/config*** Run the following command to enable basic authentication. ***c:\\\> winrm set winrm/config/service/auth @{Basic="true"}*** - Run the following command to allow transfer of unencrypted data on the WinRM service. ******c:\\\> winrm set winrm/config/service @{AllowUnencrypted="true"}*** *** - Enable basic authentication on the WinRM client. Run the following command to check whether basic authentication is allowed. ******c:\\\> winrm get winrm/config*** *** Run the following command to enable basic authentication. ******c:\\\> winrm set winrm/config/client/auth @{Basic="true"}*** *** - Run the following command to allow transfer of unencrypted data on the WinRM client. ******c:\\\> winrm set winrm/config/client @{AllowUnencrypted="true"}*** *** - If the WinRM host machine is in an external domain, run the following command to specify the trusted hosts. ******c:\\\> winrm set winrm/config/client @{TrustedHosts="host1, host2, host3"}*** *** - Run the following command to test the connection to the WinRM service. ******c:\\\> winrm identify -r:[http://winrm\_server:5985](http://winrm_server:5985/) -[auth:basic](http://authbasic/) -u:user\_name -p:password -[encoding:utf-8](http://encodingutf-8/)****** ### Configure WinRM to Use HTTPS Configure the WinRM host to enable communication with the PowerShell plug-in through the HTTPS protocol.The WinRM host requires a certificate so that it can communicate through the HTTPS protocol. You can either obtain a certificate or generate one. For example, you can generate a self-signed certificate by using the Certificate Creation tool (makecert.exe) that is part of the .NET Framework SDK. **Procedure**: - Generate a self-signed certificate. The following command line contains example syntax for creating a certificate on the WinRM host by using makecert.exe. ***makecert.exe -r -pe -n "CN=host\_name-3,O=organization\_name" -e mm/dd/yyyy -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 certificate\_name.cer*** - Add the generated certificate by using the Microsoft Management Console. 1. Run mmc.exe. 2. Select File \> Add/Remove Snap-in. 3. From the list of available snap-ins, select Certificates and click Add. 4. Select Computer account and click Next. 5. Click Finish. 6. Verify that the certificate is installed in Console Root \> Certificates (Local Computer) \> Personal \> Certificates and Console Root \> Certificates (Local Computer) \> Trusted Root Certification Authorities \> Certificates. If the certificate is not installed in the Trusted Root Certification Authorities and Personal folders, you must install it manually. - Create an HTTPS listener by using the correct thumbprint and host name. The following command line contains example syntax for creating an HTTPS listener. ***winrm create winrm/config/Listener?Address=\*+Transport=HTTPS @{Hostname="host\_name";CertificateThumbprint="certificate\_thumbprint"}*** - Test the connection. The following command line contains example syntax for testing the connection. ***winrs -r:[https://host\_name:port\_number](https://host_nameport_number/) -u:user\_name -p:password hostname"}*** ### Increase upload data size - You need to create a new PSSessionConfiguration (this to not use the default one) in your remote computer: ***Register-PSSessionConfiguration -Name DataNoLimits*** \#or the name you like. - Then configuring the parameter you want (in this case MaximumReceivedDataSizePerCommandMB and MaximumReceivedObjectSizeMB): ***Set-PSSessionConfiguration -Name DataNoLimits -MaximumReceivedDataSizePerCommandMB 500 -MaximumReceivedObjectSizeMB 500*** - Then create the new session in your local Computer with the PSSessionConfiguration you need: ***$Session = New-PSSession -ComputerName MyRemoteComp -ConfigurationName DataNoLimits*** ### Release 1.0 (04 March 2017) - First public release