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:
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:
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 -auth:basic -u:user_name -p:password -encoding:utf-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.
- Run mmc.exe.
- Select File > Add/Remove Snap-in.
- From the list of available snap-ins, select Certificates and click Add.
- Select Computer account and click Next.
- Click Finish.
- 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 -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