我有一个PowerShell V2脚本可以移动一些文件并安装一些服务.但是,我想在PowerShell脚本的中途调用并运行一个.cs文件.我发现了大量关于呼叫的文章PowerShell,C#但没有相反的方式.我只想运行一次C#文件然后继续运行PowerShell脚本.
如果有人能指出我的方向,解释如何实现这一目标,或者如果你了解自己并可以提供帮助,我将不胜感激.
Knu*_*ger 33
我认为我们没有理由不能直接从powershell运行.cs文件,因此我采用了Keith的剪辑并添加了缺少的get-content部分来完成OP所要求的内容.无需编译代码,只需编辑.cs文件的路径即可
$source = Get-Content -Path "A:\basic.cs"
Add-Type -TypeDefinition "$source"
# Call a static method
[BasicTest]::Add(4, 3)
# Create an instance and call an instance method
$basicTestObject = New-Object BasicTest
$basicTestObject.Multiply(5, 2)
Run Code Online (Sandbox Code Playgroud)
显然我把这个片段添加到了我的basic.cs中.
public class BasicTest
{
public static int Add(int a, int b)
{
return (a + b);
}
public int Multiply(int a, int b)
{
return (a * b);
}
}
Run Code Online (Sandbox Code Playgroud)
Kei*_*ill 31
您可以使用它Add-Type来编译C#代码并将其添加到当前的PowerShell会话中.然后像调用任何其他.NET框架代码一样调用C#代码.这是来自man pageAdd-Type 的示例:
PS C:\>$source = @"
public class BasicTest
{
public static int Add(int a, int b)
{
return (a + b);
}
public int Multiply(int a, int b)
{
return (a * b);
}
}
"@
PS C:\>Add-Type -TypeDefinition $source
PS C:\>[BasicTest]::Add(4, 3)
PS C:\>$basicTestObject = New-Object BasicTest
PS C:\>$basicTestObject.Multiply(5, 2)
Run Code Online (Sandbox Code Playgroud)
你在寻找错误的东西.将C#放入程序集中,并从PowerShell调用其公共类,函数和方法,就像从Powershell调用.NET Framework一样.
如果您真的想从PowerShell编译和运行C#源代码,请参阅 Weekend Scripter:在PowerShell中运行C#代码.
| 归档时间: |
|
| 查看次数: |
20014 次 |
| 最近记录: |