Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C调用powershell脚本时包含不工作的脚本#_C#_Powershell - Fatal编程技术网

C# 从C调用powershell脚本时包含不工作的脚本#

C# 从C调用powershell脚本时包含不工作的脚本#,c#,powershell,C#,Powershell,我有一个powershell脚本,其中包含以下脚本 . "$PSScriptRoot\CheckPermissions.ps1" 当从c#调用脚本时,我得到了这个错误 {术语'\CheckPermissions.ps1'不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查拼写 如果包含路径,请验证该路径是否正确 请更正并重试。} 从PS窗口运行时,脚本工作正常 从c#?运行脚本时,$PSScriptRoot变量不可用。您可以尝试使用以下方法获取脚本目录: $scriptDir =

我有一个powershell脚本,其中包含以下脚本

. "$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。