def test_psrp(self, functional_transports): for wsman in functional_transports: with RunspacePool(wsman) as pool: pool.exchange_keys() ps = PowerShell(pool) ps.add_cmdlet("Get-Item").add_parameter("Path", "C:\\Windows") ps.add_statement() sec_string = pool.serialize(u"super secret", ObjectMeta("SS")) ps.add_cmdlet("Set-Variable") ps.add_parameter("Name", "password") ps.add_parameter("Value", sec_string) ps.add_statement().add_script( "[System.Runtime.InteropServices.marshal]" "::PtrToStringAuto([System.Runtime.InteropServices.marshal]" "::SecureStringToBSTR($password))") ps.add_statement().add_cmdlet("ConvertTo-SecureString") ps.add_parameter("String", "host secret") ps.add_parameter("AsPlainText") ps.add_parameter("Force") large_string = "hello world " * 3000 ps.add_statement() ps.add_script("$VerbosePreference = 'Continue'; " "Write-Verbose '%s'" % large_string) actual = ps.invoke() assert ps.had_errors is False assert len(actual) == 3 assert str(actual[0]) == "C:\\Windows" assert actual[1] == u"super secret" assert actual[2] == u"host secret" assert str(ps.streams.verbose[0]) == large_string
def test_psrp_jea(self, functional_transports): for wsman in functional_transports: with RunspacePool(wsman, configuration_name="JEARole") as pool: ps = PowerShell(pool) wsman_path = "WSMan:\\localhost\\Service\\AllowUnencrypted" ps.add_cmdlet("Get-Item").add_parameter("Path", wsman_path) ps.add_statement() ps.add_cmdlet("Set-Item").add_parameters({ "Path": wsman_path, "Value": "True" }) actual = ps.invoke() assert ps.had_errors is True assert len(actual) == 1 assert actual[0].property_sets[0].adapted_properties['Value'] == \ 'false' assert str(ps.streams.error[0]) == \ "The term 'Set-Item' is not recognized as the name of a " \ "cmdlet, function, script file, or operable program. Check " \ "the spelling of the name, or if a path was included, " \ "verify that the path is correct and try again."