`
csyqbtlsz
  • 浏览: 24622 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PowerShell调用WebService

阅读更多

最近的开发工作客户提了一个需求,就是希望记录系统的登录时间和登出时间,经过简单的讨论之后,打算使用PowerShell写成脚本挂在组策略上,因此需要这个脚本实现调用制作系统的WebService,具体代码如下:

#使用PowerShell调用WebService的脚本块
#此方法有三个参数
#url(String):要调用的WebService地址
#methodName(String):要调用的WebService方法
#parameters(Object[]):调用WebService方法所需要的参数
function Call-WebserviceMethod($url,$metbodName,$parameters){
	$result = @{"ExecuteState" = $true ; "ExecuteMessage" = "" ; "ExecuteResult" = ""};
	#生成代理类的命名空间
	$namespace = "EnterpriseServerBase.WebService.DynamicWebCalling";
	#取URL的最后服务名作为类名
	$className = $url.Split(@('/'))[-1].Split(@('.'))[0];
	#创建Web客户端
	$webClient = New-Object -TypeName System.Net.WebClient;
	#读取WSDL
	$stream = $webClient.OpenRead($url + "?WSDL");
	#创建WebService描述
	$serviceDescription = [System.Web.Services.Description.ServiceDescription]::Read($stream);
	#生成代理容器
	$serviceDescriptionImporter = New-Object -TypeName System.Web.Services.Description.ServiceDescriptionImporter;
	#添加描述
	$serviceDescriptionImporter.AddServiceDescription($serviceDescription, "", "");
	#生成命名空间
	$codeNameSpace = New-Object -TypeName System.CodeDom.CodeNamespace -ArgumentList $namespace;
	#生成客户端
	$codeCompileUnit = New-Object -TypeName System.CodeDom.CodeCompileUnit;
	$codeCompileUnit.Namespaces.Add($codeNameSpace);
	$serviceDescriptionImporter.Import($codeNameSpace, $codeCompileUnit);
	$cSharpCodeProvider = New-Object -TypeName Microsoft.CSharp.CSharpCodeProvider;
	#设定编译参数   
	$compilerParameters = New-Object -TypeName System.CodeDom.Compiler.CompilerParameters;
	$compilerParameters.GenerateExecutable = $false;
	$compilerParameters.GenerateInMemory = $true;
	$compilerParameters.ReferencedAssemblies.Add("System.dll");
	$compilerParameters.ReferencedAssemblies.Add("System.XML.dll");
	$compilerParameters.ReferencedAssemblies.Add("System.Web.Services.dll");
	$compilerParameters.ReferencedAssemblies.Add("System.Data.dll");
	#编译代理类
	$compilerResults = $cSharpCodeProvider.CompileAssemblyFromDom($compilerParameters,$codeCompileUnit);
	if($compilerResults.Errors.HasErrors -eq $false)
	{
		$assembly = $compilerResults.CompiledAssembly;
		$proxyType =  $assembly.GetType($namespace + "." + $className, $true, $true);
		$proxyObject = [System.Activator]::CreateInstance($proxyType);
		$proxyMethod = $proxyType.GetMethod($metbodName);
		$result["ExecuteResult"] = $proxyMethod.Invoke($proxyObject,$parameters);
		$result["ExecuteMessage"] = "执行WebService方法成功";
	}
	else
	{
		$result["ExecuteState"] = $false;
		$result["ExecuteMessage"] = "执行WebService方法失败,编译代理类时发生错误";
	}
	return $result;
}

#调用测试
Call-WebserviceMethod "http://localhost:44596/WebClient/Service.asmx" "SayHello" (@("zhangsan"))
 
分享到:
评论

相关推荐

    Powershell调用入口的优先级.docx

    ### Powershell调用入口的优先级 在PowerShell中,当执行某个命令时,系统会按照一定的优先级顺序来查找并执行相应的命令处理程序。理解这些优先级规则对于有效地使用PowerShell至关重要。本文将详细介绍PowerShell...

    PowerShell调用Google翻译服务实现英译中翻译

    PowerShell调用Google翻译网站的服务,实现英译中翻译,控制台程序,输入英文内容,输出中文信息并复制到剪贴板中。

    Asp.NET Core 如何调用WebService的方法

    - 生成过程:通过命令行或Powershell调用Svcutil工具,输入WebService的WSDL地址,自动生成对应的代理类代码。 - 配置准备:创建一个新的.NET Core控制台应用程序,并在项目文件(.csproj)中添加对应的工具引用以...

    exchange/powershell,Java调用powershell开通邮箱

    标题 "exchange/powershell,Java调用powershell开通邮箱" 暗示了这是一个关于使用Java编程语言调用PowerShell脚本在Exchange服务器上创建邮箱的教程或项目。Exchange是微软提供的一款企业级电子邮件服务器软件,而...

    Python-PowerShell封装了PythonforNET实现从PowerShell调用Python

    标题中的“Python-PowerShell封装了Python for .NET实现从PowerShell调用Python”涉及到的是在Windows环境中,如何通过PowerShell脚本调用Python代码,这通常用于自动化任务或者集成不同语言的解决方案。这里的关键...

    PowerShell调用Rate Card API1

    本文将深入探讨如何使用PowerShell调用Rate Card API,特别是在网络协议环境中。 Rate Card API通常用于获取云服务的价格和计费信息。例如,在阿里云等云服务提供商中,Rate Card API可以提供详细的定价详情,帮助...

    powerbi-powershell:通过PowerShell调用Power BI REST API的示例

    使用PowerShell调用Power BI REST API的示例。 Microsoft Power BI PowerShell示例 介绍 此存储库包含使用PowerShell调用Power BI REST API的示例。 每个PowerShell脚本都是自记录的。 触发计划的刷新并检查刷新...

    C#调用PowerShell

    它具有强大的功能,其中之一就是能够调用其他系统组件,如PowerShell。PowerShell是一种命令行shell和脚本语言,由Microsoft开发,旨在增强系统管理员对操作系统及应用程序的管理能力。本文将深入探讨如何在C#中调用...

    PowerShell调用Post Import功能故障排查1

    ### PowerShell调用Post Import功能故障排查 #### 一、背景介绍 在PowerShell脚本调用Post Import功能的过程中,遇到了一些故障。此功能主要用于通过HTTP请求调用REST API,实现pbix文件上传到Power BI Embedded的...

    基于PowerShell调用.Net的白屏检测原神启动源码

    所以通过调用.Net提供的 System.Windows.Forms 以及 System.Drawing.Graphics 等程序集实现屏幕检测,像素判断 可以实现判断白屏。再通过powershell原生的语法可以启动原神或者浏览器等各种程序 为了保证沉浸式体验...

    java 调用 powershell 并传参 返回

    java 调用 powershell 并传参 返回

    java+powershell 控制windows

    在这个场景下,我们可以利用 Java 编写的程序来调用 PowerShell 命令,实现对 Windows 的各种操作。 首先,让我们详细了解如何通过 Java 调用 PowerShell 脚本: 1. **调用 PowerShell 命令**: 在 Java 中,我们...

    powershell&bat&vbs三者相互调用.doc

    powershell&bat&vbs三者相互调用.doc

    C#调用powershell例子

    C#调用powershell脚本的一个例子,很简洁清晰,vs打开项目即可运行。 Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。

    Windows PowerShell每周提示

    Windows PowerShell每周提示

    Windows Powershell调用静态方法

    Powershell将信息存储在对象中,每个对象都会有一个具体的类型,简单的文本会以System.String类型存储,日期会以System.DateTime类型存储。任何.NET对象都可以通过GetType()方法返回它的类型,该类型中有一个...

    Python-PowerLessShell依赖MSBuildexe来远程执行PowerShell脚本和命令不需要调用powershellexe

    【Python-PowerLessShell依赖MSBuildexe来远程执行PowerShell脚本和命令不需要调用powershellexe】 在IT行业中,Python是一种广泛使用的编程语言,因其简洁、易读的语法和丰富的库支持而受到青睐。当涉及到系统管理...

    CSharp-powershell-to-cs-onitada-sample:从PowerShell调用C#示例应用程序的代码。对于博客文章

    CSharp从Powershell到CS-Onitada 从PowerShell调用C#示例应用程序的代码。 用于在Hatena博客上发布以下文章。 “ [[C#]从PowerShell运行C#应用程序并获得结果[Windows]”

    在Java中来调用PowerShell代码 jPowerShell-3.1.1.jar

    在Java中来调用PowerShell代码 使用jPowerShell.jar包。For example, for Maven you have just to add to your pom.xml: <groupId>com.profesorfalken</groupId> <artifactId>jPowerShell <version>3.1.1...

Global site tag (gtag.js) - Google Analytics