簡體   English   中英

C# 調用 PowerShell 並傳遞環境變量

[英]C# calling PowerShell and passing environment variables

我正在嘗試從 C# 調用 PowerShell 代碼,但環境變量沒有得到“繼承”,當我嘗試手動將環境變量設置為空時。

// The difference between CreateDefault and CreateDefault2 is that
// CreateDefault includes engine snap-ins, while CreateDefault2 does not.
var initialState = InitialSessionState.CreateDefault2();
initialState.EnvironmentVariables.Add(Environment.GetEnvironmentVariables()
    .Cast<DictionaryEntry>()
    .Select(x => new SessionStateVariableEntry(x.Key.ToString(), x.Value,
        $"Setting environment variable {x.Key} to {x.Value}")));

using var ps = PowerShell.Create(initialState);
var results = await ps.AddScript("dir env:").InvokeAsync();
foreach (var result in results)
{
    Debug.Write(result.ToString());
}

這是我得到的results

Enumeration yielded no results

請嘗試以下操作:

public static async Task<string> Execute()
{
    StringBuilder sb = new StringBuilder();

    // The difference between CreateDefault and CreateDefault2 is that
    // CreateDefault includes engine snap-ins, while CreateDefault2 does not.
    var initialState = InitialSessionState.CreateDefault2();
    initialState.EnvironmentVariables.Add(Environment.GetEnvironmentVariables()
        .Cast<DictionaryEntry>()
        .Select(x => new SessionStateVariableEntry(x.Key.ToString(), x.Value,
            $"Setting environment variable {x.Key} to {x.Value}")));

    using var ps = PowerShell.Create(initialState);
    var results = await ps.AddScript("dir env:").InvokeAsync();
    //var results = await ps.AddCommand("Get-ChildItem").AddParameter("Path", "Env:").InvokeAsync();

    foreach (PSObject outputItem in results)
    {
        DictionaryEntry entry = (DictionaryEntry)outputItem.BaseObject;
        Debug.WriteLine($"EnvVar Key: '{entry.Key}' Value: '{entry.Value}'");
        sb.AppendLine($"{entry.Key}: {entry.Value}");
    }

    return sb.ToString();
}

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM