PS C:\Users\Administrator> <#
>> .SYNOPSIS
>> 基于 curl 的 PowerShell HTTP 请求工具
>> #>
>>
PS C:\Users\Administrator> function Invoke-CurlRequest {
>> [CmdletBinding()]
>> param(
>> [Parameter(Mandatory = $true, Position = 0)]
>> [string]$Url,
>>
>> [ValidateSet('GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS')]
>> [string]$Method = 'GET',
>>
>> [hashtable]$Headers = @{},
>>
>> [string]$Body,
>>
>> [string]$OutputFile,
>>
>> [ValidateSet('Text', 'Json', 'Xml', 'Object')]
>> [string]$OutputType = 'Text',
>>
>> [int]$Timeout = 30,
>>
>> [int]$RetryCount = 0,
>>
>> [int]$RetryInterval = 5,
>>
>> [int[]]$RetryOnStatusCodes = @(500, 502, 503, 504),
>>
>> [switch]$RetryOnTimeout,
>>
>> [switch]$Insecure,
>>
>> [switch]$FollowRedirects,
>>
>> [switch]$VerboseOutput
>> )
>>
>> # 硬编码 curl 路径
>> $curlPath = "E:\curl-8.15.0_4-win64-mingw\bin\curl.exe"
>> if (-not (Test-Path $curlPath)) {
>> throw "curl 未找到: $curlPath"
>> }
>>
>> # 构建 curl 参数
>> $curlArgs = @("-s", "-X", $Method, "--max-time", $Timeout)
>>
>> # 添加请求头
>> foreach ($key in $Headers.Keys) {
>> $headerValue = $Headers[$key]
>> $curlArgs += "-H"
>> $curlArgs += "`"$key: $headerValue`""
>> }
>>
所在位置 行:33 字符: 25
+ $curlArgs += "`"$key: $headerValue`""
+ ~~~~~
变量引用无效。':' 后面的变量名称字符无效。请考虑使用 ${} 分隔名称。
所在位置 行:1 字符: 29
+ function Invoke-CurlRequest {
+ ~
语句块或类型定义中缺少右“}”。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvalidVariableReferenceWithDrive
PS C:\Users\Administrator> # 添加请求体
PS C:\Users\Administrator> if (-not [string]::IsNullOrEmpty($Body)) {
>> $curlArgs += "-d"
>> $curlArgs += $Body
>> }
>>
PS C:\Users\Administrator> # 添加输出文件
PS C:\Users\Administrator> if (-not [string]::IsNullOrEmpty($OutputFile)) {
>> $outputDir = [System.IO.Path]::GetDirectoryName($OutputFile)
>> if (-not [string]::IsNullOrEmpty($outputDir) -and -not (Test-Path $outputDir)) {
>> New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
>> }
>> $curlArgs += "-o"
>> $curlArgs += "`"$OutputFile`""
>> }
>>
PS C:\Users\Administrator> # 添加安全选项
PS C:\Users\Administrator> if ($Insecure) {
>> $curlArgs += "--insecure"
>> }
>>
PS C:\Users\Administrator> # 添加重定向选项
PS C:\Users\Administrator> if ($FollowRedirects) {
>> $curlArgs += "-L"
>> }
>>
PS C:\Users\Administrator> # URL 编码处理
PS C:\Users\Administrator> $encodedUrl = [System.Web.HttpUtility]::UrlPathEncode($Url)
找不到类型 [System.Web.HttpUtility]。
所在位置 行:1 字符: 19
+ $encodedUrl = [System.Web.HttpUtility]::UrlPathEncode($Url)
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Web.HttpUtility:TypeName) [],RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
PS C:\Users\Administrator> $curlArgs += "`"$encodedUrl`""
PS C:\Users\Administrator>
PS C:\Users\Administrator> # 重试逻辑
PS C:\Users\Administrator> $attempt = 0
PS C:\Users\Administrator> $maxAttempts = $RetryCount + 1
PS C:\Users\Administrator> $retriedErrors = @()
PS C:\Users\Administrator>
PS C:\Users\Administrator> do {
>> $attempt++
>> $shouldRetry = $false
>> $curlError = $null
>>
>> try {
>> if ($VerboseOutput -or $VerbosePreference -ne 'SilentlyContinue') {
>> Write-Verbose "执行 curl 命令 (尝试 $attempt/$maxAttempts):"
>> Write-Verbose "$curlPath $($curlArgs -join ' ')"
>> }
>>
>> # 执行 curl
>> $result = & $curlPath $curlArgs 2>&1
>>
>> # 处理输出
>> $response = @{
>> Status = "Success"
>> StatusCode = 200
>> Content = $null
>> Headers = @{}
>> RawOutput = $result
>> Attempts = $attempt
>> }
>>
>> # 解析状态码
>> if ($result -match 'HTTP/\d\.\d (\d{3})') {
>> $response.StatusCode = [int]$matches[1]
>> }
>>
>> # 解析响应头
>> $headerLines = $result | Where-Object { $_ -match '^< ' }
>> foreach ($line in $headerLines) {
>> if ($line -match '^< (\w+):\s*(.+)') {
>> $response.Headers[$matches[1]] = $matches[2].Trim()
>> }
>> }
>>
>> # 提取内容
>> $contentStart = $result | Select-String -Pattern '^\{|^<' | Select-Object -First 1
>> if ($null -ne $contentStart) {
>> $contentIndex = [array]::IndexOf($result, $contentStart)
>> $response.Content = $result[$contentIndex..($result.Count-1)] -join "`n"
>> }
>>
>> # 处理内容类型
>> if ($OutputType -ne 'Text' -and $null -ne $response.Content) {
>> switch ($OutputType) {
>> 'Json' {
>> try {
>> $response.Content = $response.Content | ConvertFrom-Json
>> }
>> catch {
>> $response.Status = "JsonParseError"
>> $response.ErrorMessage = $_.Exception.Message
>> }
>> }
>> 'Xml' {
>> try {
>> $xml = [xml]$response.Content
>> $response.Content = $xml
>> }
>> catch {
>> $response.Status = "XmlParseError"
>> $response.ErrorMessage = $_.Exception.Message
>> }
>> }
>> 'Object' {
>> # 根据内容类型自动转换
>> if ($response.Headers['Content-Type'] -like '*json*') {
>> try {
>> $response.Content = $response.Content | ConvertFrom-Json
>> }
>> catch {
>> $response.Status = "JsonParseError"
>> $response.ErrorMessage = $_.Exception.Message
>> }
>> }
>> elseif ($response.Headers['Content-Type'] -like '*xml*') {
>> try {
>> $xml = [xml]$response.Content
>> $response.Content = $xml
>> }
>> catch {
>> $response.Status = "XmlParseError"
>> $response.ErrorMessage = $_.Exception.Message
>> }
>> }
>> }
>> }
>> }
>>
>> # 检查是否需要重试
>> if ($attempt -lt $maxAttempts) {
>> if ($RetryOnStatusCodes -contains $response.StatusCode) {
>> $shouldRetry = $true
>> $retriedErrors += "HTTP $($response.StatusCode)"
>> }
>> elseif ($RetryOnTimeout -and $result -match 'Operation timed out') {
>> $shouldRetry = $true
>> $retriedErrors += "Timeout"
>> }
>> }
>>
>> return $response
>> }
>> catch {
>> $curlError = $_
>> $shouldRetry = ($attempt -lt $maxAttempts) -and ($RetryOnTimeout -or $RetryOnStatusCodes.Count -gt 0)
>> $retriedErrors += $_.Exception.Message
>>
>> if (-not $shouldRetry) {
>> throw $curlError
>> }
>> }
>>
>> # 指数退避 + 随机抖动
>> if ($shouldRetry) {
>> $waitTime = $RetryInterval * [math]::Pow(2, $attempt - 1)
>> $jitter = Get-Random -Minimum 0.1 -Maximum ($waitTime * 0.3)
>> $totalWait = [math]::Ceiling($waitTime + $jitter)
>>
>> Write-Verbose "请求失败,将在 ${totalWait} 秒后重试 (错误: $($curlError.Exception.Message))"
>> Start-Sleep -Seconds $totalWait
>> }
>> } while ($shouldRetry)
>> }
>>
所在位置 行:114 字符: 1
+ }
+ ~
表达式或语句中包含意外的标记“}”。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
PS C:\Users\Administrator> Export-ModuleMember -Function Invoke-CurlRequest
Export-ModuleMember : 只能从模块内调用 Export-ModuleMember cmdlet。
所在位置 行:1 字符: 1
+ Export-ModuleMember -Function Invoke-CurlRequest
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Export-ModuleMember], InvalidOperationException
+ FullyQualifiedErrorId : Modules_CanOnlyExecuteExportModuleMemberInsideAModule,Microsoft.PowerShell.Commands.Expo
rtModuleMemberCommand
PS C:\Users\Administrator>
PS C:\Users\Administrator> <#
>> .SYNOPSIS
>> 基于 curl 的 PowerShell HTTP 请求工具
>> #>
>>
PS C:\Users\Administrator> function Invoke-CurlRequest {
>> [CmdletBinding()]
>> param(
>> [Parameter(Mandatory = $true, Position = 0)]
>> [string]$Url,
>>
>> [ValidateSet('GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS')]
>> [string]$Method = 'GET',
>>
>> [hashtable]$Headers = @{},
>>
>> [string]$Body,
>>
>> [string]$OutputFile,
>>
>> [ValidateSet('Text', 'Json', 'Xml', 'Object')]
>> [string]$OutputType = 'Text',
>>
>> [int]$Timeout = 30,
>>
>> [int]$RetryCount = 0,
>>
>> [int]$RetryInterval = 5,
>>
>> [int[]]$RetryOnStatusCodes = @(500, 502, 503, 504),
>>
>> [switch]$RetryOnTimeout,
>>
>> [switch]$Insecure,
>>
>> [switch]$FollowRedirects,
>>
>> [switch]$VerboseOutput
>> )
>>
>> # 硬编码 curl 路径
>> $curlPath = "E:\curl-8.15.0_4-win64-mingw\bin\curl.exe"
>> if (-not (Test-Path $curlPath)) {
>> throw "curl 未找到: $curlPath"
>> }
>>
>> # 构建 curl 参数
>> $curlArgs = @("-s", "-X", $Method, "--max-time", $Timeout)
>>
>> # 添加请求头
>> foreach ($key in $Headers.Keys) {
>> $headerValue = $Headers[$key]
>> $curlArgs += "-H"
>> $curlArgs += "`"$key: $headerValue`""
>> }
>>
所在位置 行:33 字符: 25
+ $curlArgs += "`"$key: $headerValue`""
+ ~~~~~
变量引用无效。':' 后面的变量名称字符无效。请考虑使用 ${} 分隔名称。
所在位置 行:1 字符: 29
+ function Invoke-CurlRequest {
+ ~
语句块或类型定义中缺少右“}”。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvalidVariableReferenceWithDrive
PS C:\Users\Administrator> # 添加请求体
PS C:\Users\Administrator> if (-not [string]::IsNullOrEmpty($Body)) {
>> $curlArgs += "-d"
>> $curlArgs += $Body
>> }
>>
PS C:\Users\Administrator> # 添加输出文件
PS C:\Users\Administrator> if (-not [string]::IsNullOrEmpty($OutputFile)) {
>> $outputDir = [System.IO.Path]::GetDirectoryName($OutputFile)
>> if (-not [string]::IsNullOrEmpty($outputDir) -and -not (Test-Path $outputDir)) {
>> New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
>> }
>> $curlArgs += "-o"
>> $curlArgs += "`"$OutputFile`""
>> }
>>
PS C:\Users\Administrator> # 添加安全选项
PS C:\Users\Administrator> if ($Insecure) {
>> $curlArgs += "--insecure"
>> }
>>
PS C:\Users\Administrator> # 添加重定向选项
PS C:\Users\Administrator> if ($FollowRedirects) {
>> $curlArgs += "-L"
>> }
>>
PS C:\Users\Administrator> # URL 编码处理
PS C:\Users\Administrator> $encodedUrl = [System.Web.HttpUtility]::UrlPathEncode($Url)
找不到类型 [System.Web.HttpUtility]。
所在位置 行:1 字符: 19
+ $encodedUrl = [System.Web.HttpUtility]::UrlPathEncode($Url)
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Web.HttpUtility:TypeName) [],RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
PS C:\Users\Administrator> $curlArgs += "`"$encodedUrl`""
PS C:\Users\Administrator>
PS C:\Users\Administrator> # 重试逻辑
PS C:\Users\Administrator> $attempt = 0
PS C:\Users\Administrator> $maxAttempts = $RetryCount + 1
PS C:\Users\Administrator> $retriedErrors = @()
PS C:\Users\Administrator>
PS C:\Users\Administrator> do {
>> $attempt++
>> $shouldRetry = $false
>> $curlError = $null
>>
>> try {
>> if ($VerboseOutput -or $VerbosePreference -ne 'SilentlyContinue') {
>> Write-Verbose "执行 curl 命令 (尝试 $attempt/$maxAttempts):"
>> Write-Verbose "$curlPath $($curlArgs -join ' ')"
>> }
>>
>> # 执行 curl
>> $result = & $curlPath $curlArgs 2>&1
>>
>> # 处理输出
>> $response = @{
>> Status = "Success"
>> StatusCode = 200
>> Content = $null
>> Headers = @{}
>> RawOutput = $result
>> Attempts = $attempt
>> }
>>
>> # 解析状态码
>> if ($result -match 'HTTP/\d\.\d (\d{3})') {
>> $response.StatusCode = [int]$matches[1]
>> }
>>
>> # 解析响应头
>> $headerLines = $result | Where-Object { $_ -match '^< ' }
>> foreach ($line in $headerLines) {
>> if ($line -match '^< (\w+):\s*(.+)') {
>> $response.Headers[$matches[1]] = $matches[2].Trim()
>> }
>> }
>>
>> # 提取内容
>> $contentStart = $result | Select-String -Pattern '^\{|^<' | Select-Object -First 1
>> if ($null -ne $contentStart) {
>> $contentIndex = [array]::IndexOf($result, $contentStart)
>> $response.Content = $result[$contentIndex..($result.Count-1)] -join "`n"
>> }
>>
>> # 处理内容类型
>> if ($OutputType -ne 'Text' -and $null -ne $response.Content) {
>> switch ($OutputType) {
>> 'Json' {
>> try {
>> $response.Content = $response.Content | ConvertFrom-Json
>> }
>> catch {
>> $response.Status = "JsonParseError"
>> $response.ErrorMessage = $_.Exception.Message
>> }
>> }
>> 'Xml' {
>> try {
>> $xml = [xml]$response.Content
>> $response.Content = $xml
>> }
>> catch {
>> $response.Status = "XmlParseError"
>> $response.ErrorMessage = $_.Exception.Message
>> }
>> }
>> 'Object' {
>> # 根据内容类型自动转换
>> if ($response.Headers['Content-Type'] -like '*json*') {
>> try {
>> $response.Content = $response.Content | ConvertFrom-Json
>> }
>> catch {
>> $response.Status = "JsonParseError"
>> $response.ErrorMessage = $_.Exception.Message
>> }
>> }
>> elseif ($response.Headers['Content-Type'] -like '*xml*') {
>> try {
>> $xml = [xml]$response.Content
>> $response.Content = $xml
>> }
>> catch {
>> $response.Status = "XmlParseError"
>> $response.ErrorMessage = $_.Exception.Message
>> }
>> }
>> }
>> }
>> }
>>
>> # 检查是否需要重试
>> if ($attempt -lt $maxAttempts) {
>> if ($RetryOnStatusCodes -contains $response.StatusCode) {
>> $shouldRetry = $true
>> $retriedErrors += "HTTP $($response.StatusCode)"
>> }
>> elseif ($RetryOnTimeout -and $result -match 'Operation timed out') {
>> $shouldRetry = $true
>> $retriedErrors += "Timeout"
>> }
>> }
>>
>> return $response
>> }
>> catch {
>> $curlError = $_
>> $shouldRetry = ($attempt -lt $maxAttempts) -and ($RetryOnTimeout -or $RetryOnStatusCodes.Count -gt 0)
>> $retriedErrors += $_.Exception.Message
>>
>> if (-not $shouldRetry) {
>> throw $curlError
>> }
>> }
>>
>> # 指数退避 + 随机抖动
>> if ($shouldRetry) {
>> $waitTime = $RetryInterval * [math]::Pow(2, $attempt - 1)
>> $jitter = Get-Random -Minimum 0.1 -Maximum ($waitTime * 0.3)
>> $totalWait = [math]::Ceiling($waitTime + $jitter)
>>
>> Write-Verbose "请求失败,将在 ${totalWait} 秒后重试 (错误: $($curlError.Exception.Message))"
>> Start-Sleep -Seconds $totalWait
>> }
>> } while ($shouldRetry)
>> }
>>
所在位置 行:114 字符: 1
+ }
+ ~
表达式或语句中包含意外的标记“}”。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
PS C:\Users\Administrator> Export-ModuleMember -Function Invoke-CurlRequest
Export-ModuleMember : 只能从模块内调用 Export-ModuleMember cmdlet。
所在位置 行:1 字符: 1
+ Export-ModuleMember -Function Invoke-CurlRequest
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Export-ModuleMember], InvalidOperationException
+ FullyQualifiedErrorId : Modules_CanOnlyExecuteExportModuleMemberInsideAModule,Microsoft.PowerShell.Commands.Expo
rtModuleMemberCommand
PS C:\Users\Administrator> # 1. 创建模块目录
PS C:\Users\Administrator> $modulePath = "$env:USERPROFILE\Documents\WindowsPowerShell\Modules\CurlTools"
PS C:\Users\Administrator> New-Item -ItemType Directory -Path $modulePath -Force | Out-Null
PS C:\Users\Administrator>
PS C:\Users\Administrator> # 2. 保存模块文件
PS C:\Users\Administrator> $psm1Content = @'
>> <上面完整的CurlTools.psm1内容>
>> '@
>> $psm1Content | Out-File -FilePath "$modulePath\CurlTools.psm1" -Encoding UTF8
>>
PS C:\Users\Administrator> $psd1Content = @'
>> <上面完整的CurlTools.psd1内容>
>> '@
>> $psd1Content | Out-File -FilePath "$modulePath\CurlTools.psd1" -Encoding UTF8
>>
PS C:\Users\Administrator> # 3. 绕过执行策略导入模块
PS C:\Users\Administrator> $importScript = {
>> # 临时设置执行策略
>> $currentPolicy = Get-ExecutionPolicy -Scope Process -ErrorAction SilentlyContinue
>> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force -ErrorAction SilentlyContinue
>>
>> # 导入模块
>> Import-Module "$env:USERPROFILE\Documents\WindowsPowerShell\Modules\CurlTools" -Force
>>
>> # 测试功能
>> try {
>> $testResponse = Invoke-CurlRequest -Url "https://example.com" -VerboseOutput
>> if ($testResponse) {
>> Write-Host "✅ 模块安装成功! 测试响应状态码: $($testResponse.StatusCode)" -ForegroundColor Green
>> }
>> else {
>> Write-Host "❌ 模块安装失败,请检查错误信息" -ForegroundColor Red
>> }
>> }
>> catch {
>> Write-Host "❌ 测试请求失败: $_" -ForegroundColor Red
>> }
>>
>> # 恢复原始执行策略
>> Set-ExecutionPolicy -ExecutionPolicy $currentPolicy -Scope Process -Force -ErrorAction SilentlyContinue
>> }
>>
PS C:\Users\Administrator> # 在新会话中执行
PS C:\Users\Administrator> Start-Process powershell -ArgumentList "-NoExit -Command & {$importScript}" -Verb RunAs
PS C:\Users\Administrator> # 将上面的安装脚本保存到文件
PS C:\Users\Administrator> $installScript = @'
>> <上面完整的Install-CurlTools.ps1内容>
>> '@
>> $installScript | Out-File -FilePath "$env:TEMP\Install-CurlTools.ps1" -Encoding UTF8
>> # 使用Bypass策略运行安装脚本
>> Start-Process powershell -ArgumentList "-ExecutionPolicy Bypass -File `"$env:TEMP\Install-CurlTools.ps1`"" -Verb RunAs -Wait
>> # 使用Bypass策略运行安装脚本
>> Start-Process powershell -ArgumentList "-ExecutionPolicy Bypass -File `"$env:TEMP\Install-CurlTools.ps1`"" -Verb RunAs -Wait
>> # 在新终端中测试
>> Import-Module CurlTools -Force
>> $response = Invoke-CurlRequest -Url "https://jsonplaceholder.typicode.com/posts/1" -OutputType Json
>> $response.Content
>> # 创建模块目录
>> $modulePath = "$env:USERPROFILE\Documents\WindowsPowerShell\Modules\CurlTools"
>> New-Item -ItemType Directory -Path $modulePath -Force | Out-Null
>>
Import-Module : 无法处理模块清单“C:\Users\Administrator\Documents\WindowsPowerShell\Modules\CurlTools\CurlTools.psd1” ,因为它不是有效的
Windows PowerShell 受限语言文件。请删除受限语言禁止使用的元素:
所在位置 C:\Users\Administrator\Documents\WindowsPowerShell\Modules\CurlTools\CurlTools.psd1:1 字符: 1
+ <上面完整的CurlTools.psd1内容>
+ ~~~~~~~~~~~~~~~~~~~~~~~
不允许在受限语言模式或 Data 节中使用命令“<”。
所在位置 行:10 字符: 1
+ Import-Module CurlTools -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (C:\Users\Admini...\CurlTools.psd1:String) [Import-Module], Missing
MemberException
+ FullyQualifiedErrorId : Modules_InvalidManifest,Microsoft.PowerShell.Commands.ImportModuleCommand
Invoke-CurlRequest : 在模块“CurlTools”中找到“Invoke-CurlRequest”命令,但无法加载该模块。有关详细信息,请运行“Import-Module CurlTools”。
所在位置 行:11 字符: 13
+ $response = Invoke-CurlRequest -Url "https://jsonplaceholder.typicode ...
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Invoke-CurlRequest:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CouldNotAutoloadMatchingModule
PS C:\Users\Administrator> # 创建模块文件
PS C:\Users\Administrator> @'
>> <上面完整的CurlTools.psm1内容>
>> '@ | Out-File -FilePath "$modulePath\CurlTools.psm1" -Encoding UTF8
>>
PS C:\Users\Administrator> @'
>> <上面完整的CurlTools.psd1内容>
>> '@ | Out-File -FilePath "$modulePath\CurlTools.psd1" -Encoding UTF8
>>
PS C:\Users\Administrator> # 临时导入模块
PS C:\Users\Administrator> Set-ExecutionPolicy Bypass -Scope Process -Force
Set-ExecutionPolicy : 在模块“Microsoft.PowerShell.Security”中找到“Set-ExecutionPolicy”命令,但无法加载该模块。有关详细信息,请运行“Import-Module Mi
crosoft.PowerShell.Security”。
所在位置 行:1 字符: 1
+ Set-ExecutionPolicy Bypass -Scope Process -Force
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Set-ExecutionPolicy:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CouldNotAutoloadMatchingModule
PS C:\Users\Administrator> Import-Module CurlTools -Force
Import-Module : 无法处理模块清单“C:\Users\Administrator\Documents\WindowsPowerShell\Modules\CurlTools\CurlTools.psd1” ,因为它不是有效的
Windows PowerShell 受限语言文件。请删除受限语言禁止使用的元素:
所在位置 C:\Users\Administrator\Documents\WindowsPowerShell\Modules\CurlTools\CurlTools.psd1:1 字符: 1
+ <上面完整的CurlTools.psd1内容>
+ ~~~~~~~~~~~~~~~~~~~~~~~
不允许在受限语言模式或 Data 节中使用命令“<”。
所在位置 行:1 字符: 1
+ Import-Module CurlTools -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (C:\Users\Admini...\CurlTools.psd1:String) [Import-Module], Missing
MemberException
+ FullyQualifiedErrorId : Modules_InvalidManifest,Microsoft.PowerShell.Commands.ImportModuleCommand
PS C:\Users\Administrator>
PS C:\Users\Administrator> # 测试请求
PS C:\Users\Administrator> Invoke-CurlRequest -Url "https://jsonplaceholder.typicode.com/posts/1" -OutputType Json
Invoke-CurlRequest : 在模块“CurlTools”中找到“Invoke-CurlRequest”命令,但无法加载该模块。有关详细信息,请运行“Import-Module CurlTools”。
所在位置 行:1 字符: 1
+ Invoke-CurlRequest -Url "https://jsonplaceholder.typicode.com/posts/1 ...
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Invoke-CurlRequest:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CouldNotAutoloadMatchingModule
PS C:\Users\Administrator>
最新发布