2 Pluspunkte 0 Minuspunkte

Wenn ich die Startreihenfolge einer VM in Hyper-V mit Powershell ändern will

Set-VMBios -VMName "Netbox-Prod" -StartupOrder @("Floppy", "LegacyNetworkAdapter", "CD", "IDE")

Wie kann ich das aus einem C# string erstellen? 

string vmName = (string)listParameters[0]; 
string startupOrder = (string)listParameters[1]; 

string powershellScript = $@"
Set-VMBios -VMName '{vmName}' -StartupOrder '{startupOrder}'
";
von  

1 Antwort

1 Pluspunkt 0 Minuspunkte

Du möchtest, dass startupOrder ein Array ist, da -StartupOrder in PowerShell ein Array von Werten erwartet. Hier ist ein Beispiel, wie du den startupOrder String als PowerShell Array erstellen kannst.

string vmName = (string)listParameters[0];
string startupOrder = (string)listParameters[1];

// Zerlege den startupOrder-String in einzelne Elemente
string[] startupOrderArray = startupOrder.Split(',');

// Entferne führende und abschließende Leerzeichen aus jedem Element
for (int i = 0; i < startupOrderArray.Length; i++)
{
    startupOrderArray[i] = startupOrderArray[i].Trim();
}

// Verwende string.Join, um ein PowerShell-Array zu erstellen
string powershellScript = $@"
Set-VMBios -VMName '{vmName}' -StartupOrder @({string.Join(", ", startupOrderArray)})
";

von (706 Punkte)  
Und wie muss der eingegebene String aussehen um zu funktionieren?
Zum Beispiel so:

string vmName = "Netbox-Prod";
string startupOrder = "'CD', 'IDE', 'LegacyNetworkAdapter', 'Floppy'";
Funktioniert perfekt, danke!