【发布时间】:2016-02-25 09:14:08
【问题描述】:
我对 PowerShell 还很陌生,对 Web 服务和 SOAP 还是全新的(就像今天一样)。供应商向我们提供了有关其允许创建用户帐户的 Web 服务 API 的文档。我正在尝试使用 PowerShell 从 SQL Server 中提取我们的用户并将数据发送到他们的服务。我们需要持续添加用户。
下面是我想出的一个精简版,它似乎确实有效;供应商告诉我在测试时包含一个dry_run 参数,我从response_type 得到一个dry_run_success。
我的问题是:这是否接近使用 PowerShell 的适当方式?
# Open ADO.NET Connection to database
$dbConn = New-Object Data.SqlClient.SqlConnection;
$dbConn.ConnectionString = "Data Source=mydbserver;User ID=someuserid;Password=mypassword;Initial Catalog=mydatabase";
$dbConn.Open();
$sql = "select * from mytable";
$dbSqlCmd = New-Object Data.SqlClient.SqlCommand $sql, $dbConn;
$dbRd = $dbSqlCmd.ExecuteReader();
# Create a Web Service Proxy
$proxy = New-WebServiceProxy -Uri https://somedomain.com/service/wsdl
$namespace = $proxy.GetType().NameSpace
$param = New-Object($namespace + ".somemethod")
# Loop through records from SQL and invoke the web service
While ($dbRd.Read())
{
$param.user_id = $dbRd.GetString(0)
$param.password = $dbRd.GetString(1)
$param.display_name = $dbRd.GetString(2)
$request = $proxy.TheMethod($param)
if ($request.response_type -eq 'error')
{
$request.error.extended_error_text
}
}
# Clean up
$dbRd.Close();
$dbSqlCmd.Dispose();
$dbConn.Close();
【问题讨论】:
-
API 是否允许您在一次调用中发送多个请求?如果是这样,我建议这样做而不是单独进行。
-
我没想过要问他们,但我会的。谢谢!
-
我询问了供应商,不幸的是他们每次通话只允许一个请求。
标签: web-services powershell soap