/// <summary> /// Tests that a given connection is valid and can be opened. /// </summary> /// <param name="connectionInfo">The connection information.</param> public bool TestConnection(PSConnectionInfo connectionInfo) { if (connectionInfo == null) { throw new ArgumentNullException(nameof(connectionInfo)); } try { using (var pshell = new PSClient()) { pshell.Open(connectionInfo); pshell.Close(); } return(true); } catch (PSRemotingTransportException) { return(false); } catch (OperationCanceledException) { return(false); } }
/// <summary> /// Opens the connection. /// </summary> /// <param name="connectionInfo">The connection information.</param> public void Open(PSConnectionInfo connectionInfo) { if (connectionInfo == null) { throw new ArgumentNullException(nameof(connectionInfo)); } this.Close(); try { Runspace rrs = null; this.Host = new PSClientHost(); if (connectionInfo.IsLocalConnection()) { // Local connection rrs = RunspaceFactory.CreateRunspace ( Host ); } else { // Remote connection rrs = RunspaceFactory.CreateRunspace ( Host, connectionInfo.ToRunspaceConnectionInfo() ); } rrs.Open(); this.Runspace = rrs; this.ConnectionInfo = connectionInfo; FileSystem = new PSFileSystem(this); } catch { this.Close(); throw; } }
/// <summary> /// Tests that a given connection is valid and can be opened, asynchronously. /// </summary> /// <param name="connectionInfo">The connection information.</param> public async Task <bool> TestConnectionAsync(PSConnectionInfo connectionInfo) { if (connectionInfo == null) { throw new ArgumentNullException(nameof(connectionInfo)); } var task = Task.Run(() => TestConnection(connectionInfo)); try { using (var ct = new CancellationTokenSource((int)connectionInfo.ConnectionTimeout.TotalMilliseconds)) { task.Wait(ct.Token); return(await task); } } catch (OperationCanceledException) { return(false); } }
/// <summary> /// Creates Remote PowerShell Connection Information for a given computer, using a standard /// UserName and Password combination. /// </summary> /// <param name="computerAddress"> /// The computer address (IP Address, Machine Name (local network), FQDN, etc.) /// </param> /// <param name="userName">The UserName to connect with.</param> /// <param name="password">The Password to connect with.</param> /// <param name="customPort">(Optional) a custom port number to use.</param> public static PSConnectionInfo CreateRemoteConnection ( string computerAddress, string userName, SecureString password, ushort?customPort = null ) { var result = new PSConnectionInfo { ComputerAddress = computerAddress, Credentials = new PSCredential ( userName, password ) }; if (customPort.HasValue) { result.Port = customPort.Value; } return(result); }
/// <summary> /// Opens the connection, asynchronously. /// </summary> /// <param name="connectionInfo">The connection information.</param> public async Task OpenAsync(PSConnectionInfo connectionInfo) { await Task.Run(() => Open(connectionInfo)); }
/// <summary> /// Initializes a new instance of the <see cref="PSClient" /> class to a connected state. /// </summary> /// <param name="connectionInfo">The connection information.</param> public PSClient(PSConnectionInfo connectionInfo) { Open(connectionInfo); }