找回密码  加入

AUTOIT CN

搜索
查看: 79|回复: 6

[AU3基础] 检测服务器响应,PS转AU3

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式



大佬们,下面这一行power shell代码怎么转成AU3?

  1. powershell [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet
复制代码


还有另外一个更复杂的,这个能转成AU3吗?

  1. set resfail=
  2. if not defined error (

  3. ipconfig /flushdns
  4. set "tls=$Tls12 = [Enum]::ToObject([System.Net.SecurityProtocolType], 3072); [System.Net.ServicePointManager]::SecurityProtocol = $Tls12;"

  5. for %%# in (
  6. login.live.com/ppsecure/deviceaddcredential.srf
  7. purchase.mp.microsoft.com/v7.0/users/me/orders
  8. ) do if not defined resfail (
  9. set "d1=Add-Type -AssemblyName System.Net.Http;"
  10. set "d1=!d1! $client = [System.Net.Http.HttpClient]::new();"
  11. set "d1=!d1! $response = $client.GetAsync('https://%%#').GetAwaiter().GetResult();"
  12. set "d1=!d1! $response.Content.ReadAsStringAsync().GetAwaiter().GetResult()"
  13. powershell  "!tls! !d1!" 2>nul | findstr /i "PurchaseFD DeviceAddResponse" 1>nul || set resfail=1
  14. )

  15. if not defined resfail (
  16. powershell "!tls! irm https://licensing.mp.microsoft.com/v7.0/licenses/content -Method POST" | find /i "traceId" 1>nul || set resfail=1
  17. )
复制代码


发表于 4 天前 | 显示全部楼层
第一个powershell就是判断网络状态的,但是这个方法不准确



Local $iTag_IsConected = _IsConected()
If Not @error Then MsgBox(0,'','网络状态: ' & $iTag_IsConected)
Func _IsConected()
    Local $oObj = ObjCreate("{DCB00C01-570F-4A9B-8D69-199FDBA5723B}")
    If Not IsObj($oObj) Then Return SetError(1,0,'')
    Local $oINetworks = $oObj.GetNetworks(0x1)
    If Not IsObj($oINetworks) Then Return SetError(2,0,'')
    For $oINetwork In $oINetworks
       If $oINetwork.isConnectedtoInternet Then Return True
    Next
    $oObj = 0
    Return False
EndFunc




第2个powershell, 就是2个http的GET操作,外加一个 POST操作
论坛很多这种示例

评分

参与人数 1金钱 +50 收起 理由
chishingchan + 50 乐于助人

查看全部评分

发表于 4 天前 | 显示全部楼层
关于转换,首先要对需要转换语句的理解、也更需要对 au3 的熟练。缺一不可!
 楼主| 发表于 4 天前 | 显示全部楼层
zghwelcome 发表于 2023-3-18 12:00
第一个powershell就是判断网络状态的,但是这个方法不准确

报错啊

==> The requested action with this object has failed.:
If $oINetwork.isConnectedtoInternet Then Return True
If $oINetwork^ ERROR
->17:03:10 AutoIt3.exe ended.rc:1
+>17:03:10 AutoIt3Wrapper Finished.
>Exit code: 1    Time: 0.9805
发表于 4 天前 | 显示全部楼层

特殊处理下错误



Local $iTag_IsConected = _IsConected()
If Not @error Then MsgBox(0,'','网络状态: ' & $iTag_IsConected)
Func _IsConected()
        Local $iTag
    Local $oObj = ObjCreate("{DCB00C01-570F-4A9B-8D69-199FDBA5723B}")
    If Not IsObj($oObj) Then Return SetError(1,0,'')
    Local $oINetworks = $oObj.GetNetworks(0x1)
    If Not IsObj($oINetworks) Then Return SetError(2,0,'')
    For $oINetwork In $oINetworks
       $iTag = Execute("$oINetwork.isConnectedtoInternet")
           If @error Then ContinueLoop
           If $iTag Then Return True
    Next
    $oObj = 0
    Return False
EndFunc


 楼主| 发表于 4 天前 | 显示全部楼层

不报错了。但是和直接执行powershell的结果不同



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

x
发表于 4 天前 | 显示全部楼层
zbezj 发表于 2023-3-18 18:50
不报错了。但是和直接执行powershell的结果不同

看不出什么问题
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2023-3-22 16:32 , Processed in 1.870449 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表