- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的 PowerShell 配置文件 (CurrentUser.AllHosts) 中有两个脚本让我抓狂,因为它们在看似相同的控制台上给出了不同的结果。在 Powershell(提升版)上,脚本没有任何问题,但在 ConEmu(提升版)和 Powershell ISE 中,它失败并出现 Invoke-RestMethod 错误 - 请参阅下面的完整错误。
脚本是
#Checking latest version of Git
function Show-GitCurrentRelease() {
[cmdletbinding()]
param(
[ValidateNotNullOrEmpty()]
[string]$uri = "https://api.github.com/repos/git-for-windows/git/releases/latest"
)
Begin {
Write-Verbose "[BEGIN] Starting: $($MyInvocation.MyCommand)"
}
Process {
Write-Verbose "[PROCESS] Getting current release information from $uri"
$data = Invoke-RestMethod -Uri $uri -Method Get
if ($data.tag_name) {
[PSCustomObject]@{
Name = $data.name
Version = $data.tag_name
Released = $($data.published_at -as [datetime])
}
}
}
End {
Write-Verbose "[END] Ending: $($MyInvocation.MyCommand)"
}
} # Close Show-GitCurrentRelease
和
# Downloading latest version of Git
function Get-GitCurrentRelease() {
# Download the latest 64bit version of Git for Windows
$uri = 'https://git-scm.com/download/win'
# Path to store the downloaded file
# In this case it's saved to the temp directory for the session
$path = $env:TEMP
# Get the web page
$page = Invoke-WebRequest -Uri $uri -UseBasicParsing
# Get the download link
$dl = ($page.links | where outerhtml -Match 'git-.*64-bit.exe' | select -First 1 * ).href
# Split out the file name
$filename = Split-Path $dl -Leaf
# Construct a file path for the download
$out = Join-Path -Path $path -ChildPath $filename
# Download the file
Invoke-WebRequest -Uri $dl -OutFile $out -UseBasicParsing
# Check it out
Get-Item $out
} # Close Get-GitCurrentRelease
在 Powershell(提升的控制台)中运行 Show-GitCurrentRelease
我得到以下结果:
Name Version Released
---- ------- --------
Git for Windows 2.16.2 v2.16.2.windows.1 2018-02-20 13:32:41
但是,如果我在配置为运行提升的 Powershell 提示符的 ConEmu 中运行相同的命令,我会得到以下信息:
Invoke-RestMethod : The request was aborted: Could not create SSL/TLS secure channel.
At [HOME]\Documents\WindowsPowerShell\profile.ps1:63 char:17
+ $data = Invoke-RestMethod -Uri $uri -Method Get
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
我使用 Get-GitCurrentRelease
得到了类似的结果。在 PS 上,它将最新的 Git 安装程序下载到 TMP 文件夹,而我在 ConEmu 中收到 Invoke-RestMethod 错误。我一直在谷歌搜索这个错误,据我所知,这个错误的通常原因是 powershell 和脚本正在访问的站点之间的 TLS 版本不匹配。但这在这种情况下似乎是另一回事,因为它直接在 PS 控制台中工作,而不是在 ConEmu 中工作,ConEmu 只是控制台周围的包装器/皮肤 - 在这种情况下(提升的)PS。
Powershell ISE 让我遇到同样的 Invoke-RestMethod 错误。
我测试了在 ConEmu、PS 和 PS ISE 上运行 $Host 并得到以下结果:
ConEmu 中 $host 的结果(提升):
Name : ConsoleHost
Version : 5.1.16299.248
InstanceId : fb8e89c9-7395-47ab-b732-a102da041999
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : sv-SE
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
在 PowerShell 中(提升):
Name : ConsoleHost
Version : 5.1.16299.248
InstanceId : ec79dc29-4444-4230-a0ee-a2ead575903f
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : sv-SE
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
最后在 PowerShell ISE(提升)中:
Name : Windows PowerShell ISE Host
Version : 5.1.16299.248
InstanceId : 7180cdbf-50ee-4187-8fc0-ac0b230095fa
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : sv-SE
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.Host.ISE.ISEOptions
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
ConEmu 和 PS 除了(预期的)InstanceId 和 PS ISE 具有不同的 PrivateData 值(并非意外)之外是相同的。
如果我能看到不同控制台之间的任何有意义的差异,那就更容易了
最佳答案
错误:
Invoke-RestMethod:请求已中止:无法创建 SSL/TLS 安全通道
发生这种情况是因为默认情况下,当您请求的站点使用更高版本时,PowerShell 使用 TSL 1.0。
要将脚本设置为使用更高版本,请在调用 Invoke-RestMethod 之前尝试此操作:
$AllProtocols = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12'
[Net.ServicePointManager]::SecurityProtocol = $AllProtocols
关于powershell - PS 控制台运行 $profile 脚本,但 PS ISE 和 ConEmu 在同一台机器上因 Invoke-RestMethod 错误而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49195972/
我有一个REST API,它将返回行。然而, 为什么Invoke-RestMethod -Uri "..." -Method Get | select XXX,YYY仅返回 header ? XXX
我有这段代码: $url = "https://outlook.office365.com/api/v1.0/me/messages" $date = Get-Date -Format "yyyy-M
问题 我很难将 curl 调用转换为Powershell Invoke-RestMethod 调用,因为Powershell并不会发出最多信息的错误消息(如果有的话)。 通话(Ubuntu) toke
我正在尝试创建一个 powershell 脚本来访问 DYN 的 API 并在我使用/测试的 DNS 区域上执行检查/更新。 我正在关注他们的 API 详细信息,这是第一个链接,https://hel
我正在使用 Invoke-RestMethod 从我正在使用的应用程序中获取页面名称。我注意到当我在页面上执行 GET 时,它会像这样返回页面名称 This page â is working 但是实
我们正在使用 Invoke-RestMethod在 PowerShell 脚本中调用 GET具有可变长度运行时的方法端点。有些电话可能会在几秒钟后返回,有些可能需要长达 20 分钟。我们通过 -Tim
使用PowerShell 4.0和Invoke-RestMethod cmdlet。我在使用-OutFile和-PassThru选项时遇到麻烦。 每当我添加-PassThru选项时,都会创建-OutF
我想调用一个传递包含反斜杠字符的参数的 REST API。 API 需要像 api/test// 这样的路由,例如我想传递 domain\login作为 user_name 的值. 我用 PowerS
我正在尝试将文件上传到URL。我尝试了这两种方法: Invoke-RestMethod -Uri $uploadUrl -Method Put -Headers $uploadHdrs -InFile
似乎这个问题已经被提出并得到解答,但到目前为止我遇到的每个解决方案都没有帮助。我正在编写一个 PowerShell 脚本来运行一些 REST API 来获取使用信息。我的脚本在尝试与服务器通信时立即中
Note: this question is here for historical reasons or for users of Powershell -Method GET -ContentT
我正在使用RESTful API,并且使用Firefox RESTClient插件一切都很好。我可以轻松查询API。 但是,当我尝试将相同的API调用插入powershell时不起作用! 我已经尝试了
由于某种原因,这不起作用 Invoke-RestMethod -Uri "http://localhost" -Headers @{"Host"="web.domain.com"} 我收到错误 The
Invoke-RestMethod 遇到了一个非常奇怪的问题。我使用它发送 GET 并在请求中包含 cookie: $getEndpoint = "http://YYYYYYYYYYYYYY/clie
我可以使用Powershell v5中的JIRA rest API。但是,相同的代码在Powershell v3中引发以下错误。 WARNING: Remote Server Response: Th
我正在使用 Invoke-RestMethod -Uri https://... 调用休息服务电话。 .调用结果,位于 JSON , 可以通过管道将数据传输到 Format-Table -Proper
如何使用 Powershell 调用 Azure 身份验证背后的 API?更具体地说,我确实希望这条线能够工作:Invoke-RestMethod -Method Get -Uri 'https://
我正在通过 GET Invoke-RestMethod 从我的应用程序中提取有关提供程序的一些详细信息。目前它正在返回有关提供者的所有详细信息。我只想返回事件状态设置为 True 的提供商的代码。 $
如何使用 Powershell 调用 Azure 身份验证背后的 API?更具体地说,我确实希望这条线能够工作:Invoke-RestMethod -Method Get -Uri 'https://
我正在尝试使用新的 invoke-restmethod cmdlet 来 POST JSON 文件并已成功完成此操作。但是,我没有像使用 CURL 时那样收到网络服务器的响应。对于我想要完成的任务,我
我是一名优秀的程序员,十分优秀!