using DokanNet;
using DokanNet.Logging;
using System;
using System.Linq;
using System.Management.Automation.Runspaces;
namespace PowerShellFs;
public static class Program
{
public static void Main(params string[] args)
{
using var dokan = new Dokan(new NullLogger());
RunspaceConnectionInfo? ci = null;
if (args?.FirstOrDefault() is string host)
{
ci = new WSManConnectionInfo
{
ComputerName = args[0],
AuthenticationMechanism = AuthenticationMechanism.Default
};
}
using var runspace = ci is not null ? RunspaceFactory.CreateRunspace(ci) : RunspaceFactory.CreateRunspace();
var fs = new PowerShellFs(runspace);
Console.CancelKeyPress += (sender, e) =>
{
dokan.RemoveMountPoint("Q:");
e.Cancel = true;
};
var builder = new DokanInstanceBuilder(dokan);
builder.ConfigureOptions(option =>
{
option.MountPoint = "Q:";
option.Options = DokanOptions.WriteProtection;
});
using var instance = builder.Build(fs);
instance.WaitForFileSystemClosed(uint.MaxValue);
}
}