#!/usr/bin/env python3
import sys, time, random
sys.path.insert(0, '.')
import ps_driver as P
import requests
requests.packages.urllib3.disable_warnings()
ip = sys.argv[1]
ps = P.ProxyShell(f"https://{ip}", timeout=15)
ps.get_fqdn(); ps.get_legacydn(); ps.get_sid(); ps.sid = ps.admin_sid
print("token:", "OK" if ps.get_token() else "FAIL")
port = random.randint(20000, 40000)
P.start_server(ps, port); time.sleep(1)

def dump(cmd):
    print("\n===== CMD:", cmd)
    try:
        o, e = P.wsman_shell(cmd, port)
        for i, x in enumerate(o):
            print(f"-- obj[{i}] type={type(x).__name__} str={str(x)[:120]}")
            for attr in ('adapted_properties','extended_properties','properties'):
                v = getattr(x, attr, None)
                if v:
                    print(f"   {attr}: {v}")
            if hasattr(x, '__dict__') and not getattr(x,'adapted_properties',None):
                print("   __dict__:", {k: str(vv)[:200] for k, vv in x.__dict__.items() if k != 'property_set'})
        if e:
            for x in e: print("ERR:", str(x)[:200])
    except Exception as ex:
        print("   EXC:", type(ex).__name__, str(ex)[:200])

for c in [
  'Get-TransportAgent',
  'Get-MalwareFilteringServer',
  'Get-ExchangeDiagnosticInfo -Process System',
]:
    dump(c)
