在C#(.net)中自动生成Windows密码支持

在C#(.net)中自动生成Windows密码支持,c#,.net,google-compute-engine,C#,.net,Google Compute Engine,从下面的链接中我们可以看到,我们支持使用Java和Python在其内置库的帮助下检索GoogleVM的密码。在这里,我们可以获取密码并使用RDP访问VM。 但是我们在.net中没有任何库支持来做同样的事情。 我们正在.net中开发应用程序来创建/启动/停止/删除google虚拟机。但是我们不能在没有密码的情况下使用RDP访问该VM 非常感谢,如果有人会指导使用.net应用程序检索谷歌虚拟机密码 使用启动powershell脚本,似乎有一种变通方法可以奏效: private static stri

从下面的链接中我们可以看到,我们支持使用Java和Python在其内置库的帮助下检索GoogleVM的密码。在这里,我们可以获取密码并使用RDP访问VM。 但是我们在.net中没有任何库支持来做同样的事情。 我们正在.net中开发应用程序来创建/启动/停止/删除google虚拟机。但是我们不能在没有密码的情况下使用RDP访问该VM


非常感谢,如果有人会指导使用.net应用程序检索谷歌虚拟机密码

使用启动powershell脚本,似乎有一种变通方法可以奏效:

private static string GetNewLocalUserScript(string userName, string password, bool isAdministrator)
{
    var createUserScript = $"New-LocalUser \"{userName}\" -Password (\"{password}\" | ConvertTo-SecureString -AsPlainText -Force) -FullName \"{userName}\"";

    if (isAdministrator)
    {
        createUserScript += $" \r\nAdd-LocalGroupMember -Group \"Administrators\" -Member \"{userName}\"";
    }

    return createUserScript;
}
然后,在元数据中创建新VM实例时,需要将其设置为启动脚本:

var metadata = new Metadata
{
    Items = new List<Metadata.ItemsData>(),
};

if (parameter.Accounts != null)
{
    foreach (var account in parameter.Accounts)
    {
        metadata.Items.Add(new Metadata.ItemsData
        {
            Key = "windows-startup-script-ps1",
            Value = GetNewLocalUserScript(account.Username, account.Password, account.IsAdministrator),
        });
    }
}

var instance = new Instance()
{
    Name = parameter.Name, 
    Metadata = metadata,
    ....
}
var元数据=新元数据
{
Items=新列表(),
};
if(parameter.Accounts!=null)
{
foreach(parameter.Accounts中的var帐户)
{
metadata.Items.Add(新的metadata.ItemsData
{
Key=“windows-startup-script-ps1”,
Value=GetNewLocalUserScript(account.Username、account.Password、account.IsAdministrator),
});
}
}
var instance=新实例()
{
Name=parameter.Name,
元数据=元数据,
....
}

我知道这是一个迟来的答案,但它可能会帮助一些人。这并没有使用谷歌自动生成密码并检索密码的机制,但当您必须为这些用户帐户设置特定密码时,它非常有用。

您是否考虑过使用上述gcloud命令行工具作为解决方法?(即,从c#应用程序运行此工具)这是一个示例脚本,演示如何使用一些API调用重置密码。你检查过谷歌的.NETSDK吗?没有,我们试过了,因为这个不行。我们正在尝试使其通用化,我们已经创建了一个应用程序,其中使用RESTAPI,我们可以通过passinf动态参数为不同的用户帐户创建一个通过GCP的VM。因此,我们实际上没有任何基于访问令牌的GCP帐户的用户名密码,只有我们使用GCP。因此,在这种情况下,我们无法访问gcloud命令行工具或任何东西。我们需要一些restapi信息和有效的访问令牌,我们可以为任何googlevm重置密码。