如何使用PowerShell连接Azure Machine Learning Web服务?命令未被识别报错
解决PowerShell调用Azure ML Web服务时的cmdlet未识别问题
这个错误是因为Set-AzureMLWebServiceConnection是旧版Azure ML经典Web服务的专属cmdlet,现在微软已经淘汰了经典Web服务,对应的旧模块要么没安装,要么不再被维护。下面给你两种更靠谱的解决方案:
方法一:直接用Invoke-RestMethod调用Web服务(最简便,无需额外模块)
这种方法跳过旧模块的限制,直接通过REST API调用你的Web服务,适用于只需要发起预测请求的场景:
- 准备好你的Web服务预测URL和API密钥
- 构造符合服务要求的请求体(通常是JSON格式,根据你的服务输入结构调整)
- 运行以下PowerShell命令:
# 替换成你的实际信息 $webServiceUrl = "https://你的服务端点.azureml.net/score" $apiKey = "你的Web服务API密钥" # 构造请求头 $requestHeaders = @{ "Authorization" = "Bearer $apiKey" "Content-Type" = "application/json" } # 构造请求数据,示例结构请根据你的服务输入修改 $requestBody = @" { "input_data": { "columns": ["SepalLength", "SepalWidth", "PetalLength", "PetalWidth"], "data": [[5.1, 3.5, 1.4, 0.2]] } } "@ # 发起请求并获取响应 $predictionResult = Invoke-RestMethod -Uri $webServiceUrl -Method Post -Headers $requestHeaders -Body $requestBody # 输出预测结果 Write-Host "预测结果:" $predictionResult
方法二:使用最新的Az.MachineLearning模块(适用于需要管理服务的场景)
如果你需要对Azure ML工作区、端点进行更多管理操作,可以安装官方推荐的Az模块:
- 先卸载可能存在的旧版Azure ML模块(避免冲突):
Uninstall-Module -Name AzureML -Force -ErrorAction SilentlyContinue Uninstall-Module -Name AzureRM.MachineLearning -Force -ErrorAction SilentlyContinue
- 安装最新的Az.MachineLearning模块:
Install-Module -Name Az.MachineLearning -Force -AllowClobber
- 连接到你的Azure账户:
Connect-AzAccount # 如果有多个订阅,指定要使用的订阅 Set-AzContext -SubscriptionId "你的订阅ID"
- 调用在线端点进行预测:
# 替换成你的资源信息 $resourceGroup = "你的资源组名称" $workspaceName = "你的Azure ML工作区名称" $endpointName = "你的在线端点名称" $deploymentName = "你的部署名称" # 构造请求数据 $requestData = @{ input_data = @{ columns = @("SepalLength", "SepalWidth", "PetalLength", "PetalWidth") data = @(@(5.1, 3.5, 1.4, 0.2)) } } | ConvertTo-Json -Depth 10 # 调用端点获取预测结果 $predictionResponse = Invoke-AzResourceAction -ResourceGroupName $resourceGroup ` -ResourceType "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments" ` -ResourceName "$workspaceName/$endpointName/$deploymentName" ` -Action "invoke" ` -Parameters @{ Request = $requestData } ` -ApiVersion "2023-04-01" # 输出结果 $predictionResponse
提醒一下:旧的经典Web服务已经被微软标记为弃用,建议尽快迁移到新的Azure ML托管在线端点,避免后续服务中断。
内容的提问来源于stack exchange,提问作者Reza Amya
相关产品推荐
相关产品推荐

