C# 从C调用powershell脚本时包含不工作的脚本#
我有一个powershell脚本,其中包含以下脚本C# 从C调用powershell脚本时包含不工作的脚本#,c#,powershell,C#,Powershell,我有一个powershell脚本,其中包含以下脚本 . "$PSScriptRoot\CheckPermissions.ps1" 当从c#调用脚本时,我得到了这个错误 {术语'\CheckPermissions.ps1'不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查拼写 如果包含路径,请验证该路径是否正确 请更正并重试。} 从PS窗口运行时,脚本工作正常 从c#?运行脚本时,$PSScriptRoot变量不可用。您可以尝试使用以下方法获取脚本目录: $scriptDir =
. "$PSScriptRoot\CheckPermissions.ps1"
当从c#调用脚本时,我得到了这个错误
{术语'\CheckPermissions.ps1'不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查拼写
如果包含路径,请验证该路径是否正确
请更正并重试。}
从PS窗口运行时,脚本工作正常
从c#?运行脚本时,$PSScriptRoot变量不可用。您可以尝试使用以下方法获取脚本目录:
$scriptDir = Split-Path $script:MyInvocation.MyCommand.Path
请注意,返回的文件夹路径将以反斜杠(\
)结尾。请尝试以下代码
$scriptpath = "your second file path"
$psContent = @(Get-Content $scriptPath)
[string]$psCmd = $psContent -join "`n"
$secondscriptoutput = iex $psCmd
$secondscriptoutput #output returned by second file
当从c#代码调用ps脚本时,Myinvocation将不起作用。如果对您有效,请将此标记为答案。谢谢 他不适合我。实际上$PSScriptRoot当脚本直接从PS窗口运行时,此选项有效,但当从c#调用脚本时,此选项无效。您的c#脚本运行的是哪个版本的
PowerShell
?由于$PSScriptRoot
仅适用于更高版本的PowerShell,因此您可以通过将主机信息输出到文本文件进行检查,例如主机>“C:\HostInfo.txt”
从PowerShell窗口运行时,此操作非常有效。所以版本不是问题。我的PS版本是3。