gpt4 book ai didi

c# - 如何在 C# 的 PowerShell.AddParameter 方法中使用 powershell 变量?

转载 作者:行者123 更新时间:2023-11-30 17:03:30 25 4
gpt4 key购买 nike

请参阅下面的代码。该脚本创建变量 $backupFile。我如何在下一条语句中使用该变量作为 New-Item 推荐的路径参数的值?

        using (var ps = PowerShell.Create())
{
ps.RunspacePool = _runspacePool;
ps.AddScript("$backupFile = [System.IO.Path]::Combine([System.IO.Path]::GetTempPath(),'{0}.bak')".FormatInvariant(databaseName));
ps.AddStatement();
ps.AddCommand("New-Item")
.AddParameter("Force")
.AddParameter("ItemType", "File")
.AddParameter("Path", /* How to use $backupFile?? */));
ps.Invoke();
}

最佳答案

在您调用第一个脚本之前,该变量不可用。试试这个:

ps.AddScript("$backupFile = [System.IO.Path]::Combine([System.IO.Path]::GetTempPath(),'{0}.bak')".FormatInvariant(databaseName));
ps.Invoke();
ps.Commands.Clear();
var backupFile = ps.Runspace.SessionStateProxy.PSVariable.Get("backupFile");
ps.AddCommand("New-Item")
.AddParameter("Force")
.AddParameter("ItemType", "File")
.AddParameter("Path", backupFile ));
ps.Invoke();

如果你走这条路,我认为你不能使用 RunspacePool,因为你很可能在每个 Invoke() 之间获得不同的运行空间。在这种情况下,该变量将无法用于其他运行空间。在这种情况下您真的需要使用 RunspacePool 吗?如果你这样做,那为什么不直接用 C# 做第一步:

var backupFile = Path.Combine(Path.GetTempPath(), databaseName +'.bak');

关于c# - 如何在 C# 的 PowerShell.AddParameter 方法中使用 powershell 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com