将New-WebServiceProxy SOAP请求发送到多个端点

时间:2018-07-06 12:32:26

标签: powershell soap new-webserviceproxy

第一次使用PS,一般来说第一次使用脚本!

我在本地存储在主机上的wsdl,它指向localhost端点。这是必需的,因为远程服务器不为wsdl服务。但是,它们是这些SOAP请求的有效端点。

我在我的网络中有多个终结点,并且我想在引用静态wsdl的同时将New-WebServiceProxy请求发送给每个终结点。有没有办法使用本地wsdl,但是指定目标端点替代?

这是我目前拥有的(不好意思,我想学习):

# The uri refers to the wsdl page            

$uri = ( Join-Path $PSScriptRoot "\wsdl\PublicService.wsdl" )

# Create the Web Service Proxy           
$service = New-WebServiceProxy -Uri $uri  -Namespace WebServiceProxy  -UseDefaultCredential -Verbose       

# Specify the list of target servers IP addressesr hostnames

$serverlistpath = ( Join-Path $PSScriptRoot "\servers\servers.txt" )
$servers = gc $serverlistpath


# Create an output path to the templates folderr use witin the SOAP request
$templatetemp = ( Join-Path $PSScriptRoot "\template_temp\" )


# Gets the UNC path of the script running location

$currentDirectory = Get-Location
$currentDrive = Split-Path -qualifier $currentDirectory.Path
$logicalDisk = Gwmi Win32_LogicalDisk -filter "DriveType = 4 AND DeviceID = '$currentDrive'"
$uncPath = $currentDirectory.Path.Replace($currentDrive, $logicalDisk.ProviderName)

# Execute SOAP request

$service.Backup("false", "true", "false", "false", "$uncpath\template_temp")

我计划将它作为server.txt中每个服务器的ForEach循环运行,但是需要每次都指向静态wsdl时设置不同的URL。每个服务器本身都不提供wsdl。

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可能希望创建一个带有两个标题的CSV文件,一个标题用于服务器名称,另一个标题用于URL。

例如。

server,url SERVER01,http://www.example.com/oneendpoint SERVER02,http://www.example.com/twoendpoint

然后,您可以使用foreach循环遍历每个条目。您可以使用Import-CSV cmdlet

在PowerShell中轻松导入csv文件。