gpt4 book ai didi

powershell - DbConnectionStringBuilder 在 PowerShell 中使用时不解析

转载 作者:行者123 更新时间:2023-12-03 11:28:00 29 4
gpt4 key购买 nike

我正在尝试使用 DbConnectionStringBuilder 的功能用于解析类似连接字符串的用户输入。这在 C# 中工作得很好:

using System;
using System.Data.Common;
class Program
{
static void Main(string[] args)
{
var sb = new DbConnectionStringBuilder();
sb.ConnectionString = "server = 'smtp.gmail.com'; port = 587; user = you@gmail.com";
Console.WriteLine(sb["server"]);
Console.WriteLine(sb["port"]);
Console.WriteLine(sb["user"]);
}
}

输出:
smtp.gmail.com
587
you@gmail.com

但它在 PowerShell 中不起作用。也就是说,这个字面翻译的代码在 PowerShell 中
$sb = New-Object System.Data.Common.DbConnectionStringBuilder
$sb.ConnectionString = "server = 'smtp.gmail.com'; port = 587; user = you@gmail.com"
$sb["server"]
$sb["port"]
$sb["user"]

根本不产生任何输出。

任何想法为什么?如何制作 DbConnectionStringBuilder在 PowerShell 中作为解析器工作?

最佳答案

System.Data.Common.DbConnectionStringBuilder工具IDictionary . Powershell 有一个使用 . 的字典简写这允许检索和分配键/值对,就像键是一个属性一样:

$dict = @{}
$dict["key1"] = 'value1'
$dict.key2 = 'value2'

您可以看到它将整个连接字符串存储为键/值对,而不是存储在 ConnectionString 上。属性(property)这样:
$sb = New-Object System.Data.Common.DbConnectionStringBuilder
$sb.ConnectionString = "server = 'smtp.gmail.com'; port = 587; user = you@gmail.com"
$sb #formatted table of key/value pairs

解决此问题的最简单方法是调用 set_/ get_为属性生成的方法:
$sb = New-Object System.Data.Common.DbConnectionStringBuilder
$sb.set_ConnectionString("server = 'smtp.gmail.com'; port = 587; user = you@gmail.com")
$sb["server"]
$sb["port"]
$sb["user"]

关于powershell - DbConnectionStringBuilder 在 PowerShell 中使用时不解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6237708/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com