Powershell Invoke() 在 C# 中为 bolt 命令返回零 运行
Powershell Invoke() returning zero in C# for bolt command run
我可以在 powershell 中 运行 puppet bolt 命令。在 powershell 中,我得到如下输出
Started on winrm://remotemachine
Finished on winrm://remotemachine
STDOUT:
RemoteMachineHostName
Successful on 1 target Run on 1 tartget in 3.2 sec
我的C#如下
PowerShell ps = PowerShell.Create();
ps.AddScript("C:\User1\GetRemoteAzureVMHostName.ps1");
Collection<PSObject> results = ps.Invoke(); // in results, I'm getting value as 0.
foreach (PSObject result in results)
{
//Do something
}
我在 Visual Studio 2019 年尝试将构建平台目标更改为 x64,但没有成功。
如何解决上述问题
更新 1:
我在 powershell 脚本中使用了以下命令。
bolt command run hostname --targets winrm://158.28.0.546 --no-ssl-verify --user testuser123 --password test@84p
您似乎无法将 PowerShell 的路径输入到方法 AddScript()
。这是一个通过 C# 运行 PowerShell 脚本的示例:
private static string script =File.ReadAllText(@"Path\Sum.ps1");
private static void CallPS1()
{
using (Runspace runspace = RunspaceFactory.CreateRunspace())
{
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.AddScript(script);
ps.Invoke();
foreach (PSObject result in ps.Invoke())
{
Console.WriteLine("CallPS1()");
Console.WriteLine(result);
}
}
}
所以你可以尝试把脚本读出来,然后在方法中输入它们AddScript()
。
我发现,Visual Studio 正在调用 32 位 powershell 并且无法 运行 bolt 命令作为安装在 64 位 powershell 上的 bolt 模块。
我已将项目构建平台更改为 x64 并构建它。
成功了。
我可以在 powershell 中 运行 puppet bolt 命令。在 powershell 中,我得到如下输出
Started on winrm://remotemachine
Finished on winrm://remotemachine
STDOUT: RemoteMachineHostName
Successful on 1 target Run on 1 tartget in 3.2 sec
我的C#如下
PowerShell ps = PowerShell.Create();
ps.AddScript("C:\User1\GetRemoteAzureVMHostName.ps1");
Collection<PSObject> results = ps.Invoke(); // in results, I'm getting value as 0.
foreach (PSObject result in results)
{
//Do something
}
我在 Visual Studio 2019 年尝试将构建平台目标更改为 x64,但没有成功。
如何解决上述问题
更新 1:
我在 powershell 脚本中使用了以下命令。
bolt command run hostname --targets winrm://158.28.0.546 --no-ssl-verify --user testuser123 --password test@84p
您似乎无法将 PowerShell 的路径输入到方法 AddScript()
。这是一个通过 C# 运行 PowerShell 脚本的示例:
private static string script =File.ReadAllText(@"Path\Sum.ps1");
private static void CallPS1()
{
using (Runspace runspace = RunspaceFactory.CreateRunspace())
{
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.AddScript(script);
ps.Invoke();
foreach (PSObject result in ps.Invoke())
{
Console.WriteLine("CallPS1()");
Console.WriteLine(result);
}
}
}
所以你可以尝试把脚本读出来,然后在方法中输入它们AddScript()
。
我发现,Visual Studio 正在调用 32 位 powershell 并且无法 运行 bolt 命令作为安装在 64 位 powershell 上的 bolt 模块。
我已将项目构建平台更改为 x64 并构建它。
成功了。