看到我的代碼如下。該腳本創建變量$ backupFile。如何在下一個語句中將該變量用作New-Item表示的路徑參數的值?如何在C#中的PowerShell.AddParameter方法中使用powershell變量?
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();
}
使用RunspacePool的AFAIK是遠程連接的首選方式。這就是我使用RunspacePool的原因。這也是我無法在C#中完成第一步的原因,因爲這將在本地計算機上執行。 – Jaap
一個更基本的問題是,AddCommand的用例是什麼。似乎你不能把它的結果分配給一個變量。所以你只能在Invoke的輸出中捕獲它。所以在我看來,對於Powershell類,您應該一次執行一個管道。因此,具有AddCommand(),AddStatement(),AddCommand(),AddStatement,...的序列不是要走的路(可能期望它是獨立的命令)。在每個命令之後調用Invoke在我看來也不是遠程處理情況下的最佳方式。那麼只是建立一個腳本將是最好的? – Jaap
AddCommand用於將命令添加到當前「正在建設中」的管道中。順便說一句,你沒有提到遠程處理,我沒有看到你的代碼中配置了遠程連接的任何地方。 :-)但是,爲了回答你的問題,是的,最好把$ backupFile邏輯和New-Item命令放在你用AddScript()添加的腳本字符串中,然後調用Invoke()。 –