Я использую PowerShell 5.1, Visual Studio 2017, C # и XenServer SDK 7.1.1.
Используя Get-Credentials и Export-CliXml в программе PowerShell, я сохранил свой главный сервер пулавведите учетные данные для пользователя root в файл учетных данных XML (xml_creds.xml)
Теперь я хочу создать сеанс и войти в него с помощью C # (см. код ниже).Как вы можете видеть, я вынужден преобразовать мою защищенную строку в текстовую строку, чтобы удовлетворить сигнатуру метода login_with_password
API Xen .NET.
Используя API, как мне войти всеанс с использованием защищенной строки?
Код
try
{
securedPassword = new SecureString();
string unsecuredPassword = "";
Runspace rs = RunspaceFactory.CreateRunspace();
rs.Open();
Pipeline pipeline = rs.CreatePipeline(@"Import-CliXml 'C:\foo\xml_creds.xml';");
Collection<PSObject> results = pipeline.Invoke();
if (results.Count == 1)
{
PSObject psOutput = results[0];
securedPassword = ((PSCredential)psOutput.BaseObject).Password;
unsecuredPassword = new System.Net.NetworkCredential(string.Empty, securedPassword).Password;
username = ((PSCredential)psOutput.BaseObject).UserName;
rs.Close();
session = new Session(hostname, port);
session.login_with_password(username, unsecuredPassword, API_Version.API_1_3);
}
else
{
throw new System.Exception("Could not obtain pool master server credentials");
}
}
catch (Exception e1)
{
System.Console.WriteLine(e1.Message);
}
finally
{
if (securedPassword != null)
{
securedPassword.Dispose();
}
if (session != null)
{
session.logout(session);
}
}