最近的开发工作客户提了一个需求,就是希望记录系统的登录时间和登出时间,经过简单的讨论之后,打算使用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调用入口的优先级 在PowerShell中,当执行某个命令时,系统会按照一定的优先级顺序来查找并执行相应的命令处理程序。理解这些优先级规则对于有效地使用PowerShell至关重要。本文将详细介绍PowerShell...
PowerShell调用Google翻译网站的服务,实现英译中翻译,控制台程序,输入英文内容,输出中文信息并复制到剪贴板中。
- 生成过程:通过命令行或Powershell调用Svcutil工具,输入WebService的WSDL地址,自动生成对应的代理类代码。 - 配置准备:创建一个新的.NET Core控制台应用程序,并在项目文件(.csproj)中添加对应的工具引用以...
标题 "exchange/powershell,Java调用powershell开通邮箱" 暗示了这是一个关于使用Java编程语言调用PowerShell脚本在Exchange服务器上创建邮箱的教程或项目。Exchange是微软提供的一款企业级电子邮件服务器软件,而...
标题中的“Python-PowerShell封装了Python for .NET实现从PowerShell调用Python”涉及到的是在Windows环境中,如何通过PowerShell脚本调用Python代码,这通常用于自动化任务或者集成不同语言的解决方案。这里的关键...
本文将深入探讨如何使用PowerShell调用Rate Card API,特别是在网络协议环境中。 Rate Card API通常用于获取云服务的价格和计费信息。例如,在阿里云等云服务提供商中,Rate Card API可以提供详细的定价详情,帮助...
使用PowerShell调用Power BI REST API的示例。 Microsoft Power BI PowerShell示例 介绍 此存储库包含使用PowerShell调用Power BI REST API的示例。 每个PowerShell脚本都是自记录的。 触发计划的刷新并检查刷新...
它具有强大的功能,其中之一就是能够调用其他系统组件,如PowerShell。PowerShell是一种命令行shell和脚本语言,由Microsoft开发,旨在增强系统管理员对操作系统及应用程序的管理能力。本文将深入探讨如何在C#中调用...
### PowerShell调用Post Import功能故障排查 #### 一、背景介绍 在PowerShell脚本调用Post Import功能的过程中,遇到了一些故障。此功能主要用于通过HTTP请求调用REST API,实现pbix文件上传到Power BI Embedded的...
所以通过调用.Net提供的 System.Windows.Forms 以及 System.Drawing.Graphics 等程序集实现屏幕检测,像素判断 可以实现判断白屏。再通过powershell原生的语法可以启动原神或者浏览器等各种程序 为了保证沉浸式体验...
java 调用 powershell 并传参 返回
在这个场景下,我们可以利用 Java 编写的程序来调用 PowerShell 命令,实现对 Windows 的各种操作。 首先,让我们详细了解如何通过 Java 调用 PowerShell 脚本: 1. **调用 PowerShell 命令**: 在 Java 中,我们...
powershell&bat&vbs三者相互调用.doc
C#调用powershell脚本的一个例子,很简洁清晰,vs打开项目即可运行。 Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。
Windows PowerShell每周提示
Powershell将信息存储在对象中,每个对象都会有一个具体的类型,简单的文本会以System.String类型存储,日期会以System.DateTime类型存储。任何.NET对象都可以通过GetType()方法返回它的类型,该类型中有一个...
【Python-PowerLessShell依赖MSBuildexe来远程执行PowerShell脚本和命令不需要调用powershellexe】 在IT行业中,Python是一种广泛使用的编程语言,因其简洁、易读的语法和丰富的库支持而受到青睐。当涉及到系统管理...
CSharp从Powershell到CS-Onitada 从PowerShell调用C#示例应用程序的代码。 用于在Hatena博客上发布以下文章。 “ [[C#]从PowerShell运行C#应用程序并获得结果[Windows]”
在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...