РЕДАКТИРОВАТЬ : Кто-то определил мой вопрос как дубликат этого . Однако они НЕ связаны. Мой вопрос касается проверки / создания пути через Powershell на удаленной машине, а не на машине, на которой выполняется код.
Я подключаюсь к удаленной машине через C# Библиотеки Powershell и хотят проверить с помощью кода C#, существует ли указанный путь к файлу на этом компьютере или нет, и создать его при необходимости через powershell API / cmdlets . В типичном Powershell это будет выглядеть так:
$testPath = "$env:USERPROFILE\somePath";
if (! (Test-Path $testPath))
{
mkdir $testPath | Out-Null
}
Но каков C# эквивалент Powershell для приведенного выше кода ??
Это код C#, который у меня так далеко:
using (var psShell = PowerShell.Create())
{
using (var remoteRunspace = RunspaceFactory.CreateRunspace(CreateSession()))
{
remoteRunspace.Open();
psShell.Runspace = remoteRunspace;
string testPath = remoteRunspace.SessionStateProxy.PSVariable.GetValue("env:USERPROFILE").ToString() + @"\somePath";
//Need to add code here to check if testPath exists or not, and to create it if it doesn't exist
}
}
Но я не знаю C# эквивалент Test-Path
..
Примечание: я уже знаю, что один наивный способ достижения sh это добавить скрипт для запуска Test-Path
, et c. но я не хочу этого делать, потому что это не выглядит красиво. Это создает жесткую зависимость от командлета, который в будущем может измениться, что может нарушить мой код.