英文:
Use PowerShell to Read AppConfig
问题
I would like to use PowerShell to read and write to a database as part of a larger project. The connection string is already in the appsettings.json file in the project.
我想使用PowerShell来读取和写入数据库,作为一个更大项目的一部分。连接字符串已经在项目的appsettings.json文件中。
I searched around and found $json = Get-Content 'appsettings.json' | Out-String | ConvertFrom-Json
我搜索了一下,找到了$json = Get-Content 'appsettings.json' | Out-String | ConvertFrom-Json
I keep getting an error:
我一直得到一个错误:
ConvertFrom-Json : Invalid object passed in, ':' or '}' expected. (252): {
ConvertFrom-Json:传入的对象无效,期望':'或'}'。 (252): {
But the file has no issue when it is being read in by the C# application.
但是当C#应用程序读取该文件时,文件没有问题。
Is there a way to read the system configuration files in the same fashion as a C# application?
是否有一种方式可以像C#应用程序一样读取系统配置文件?
Something like:
类似于:
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
像这样:
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
Thanks in advance.
提前感谢。
英文:
I would like to use powershell to read and write to a database as part of a larger project. The connection string is already in the appsettings.json file in the project.
I searched around and found $json = Get-Content 'appsettings.json' | Out-String | ConvertFrom-Json
I keep getting an error:
ConvertFrom-Json : Invalid object passed in, ':' or '}' expected. (252): {
But the file has no issue when it is being read in by the C# application.
Is there a way to read the system configuration files in the same fashion as a C# application?
Something like:
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
Thanks in advance.
答案1
得分: 0
以下是翻译好的内容:
你的命令是正确的,out-string 不是必要的,但也不会造成任何问题。
Get-Content appsettings.json | ConvertFrom-Json
你确定你正在从正确的目录获取正确的文件吗?如果不确定,可以直接在 PowerShell 中显示文件的内容。
Get-Content appsettings.json
通常,你可以这样从 appsettings.json
中访问连接字符串:
(Get-Content appsettings.json | ConvertFrom-Json).ConnectionStrings.MyDatabase
在我的示例中,我使用名称 "MyDatabase" 获取连接字符串。这个示例的 appsettings.json
如下所示:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"MyDatabase": "Server=localhost;Database=test;"
}
}
英文:
Your commands are correct, the out-string is not necessary, but does not break anything either.
Get-Content appsettings.json | ConvertFrom-Json
Are you sure you are getting the right file from the right directory? If in doubt, have the contents of the file displayed directly in PowerShell.
Get-Content appsettings.json
Generally, you can access a connection string from appsettings.json
this way:
(Get-Content appsettings.json | ConvertFrom-Json).ConnectionStrings.MyDatabase
In my example, I get the connection string with the name "MyDatabase". The appsettings.json
for this example looks like this:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"MyDatabase": "Server=localhost;Database=test;"
},
}
答案2
得分: 0
我发现我的 JSON 文件中有评论。最终我使用了以下代码:
$json = Get-Content '.appsettings.json' | Where-Object {$_ -notmatch '//'} | Out-String
$json = $json | ConvertFrom-Json
这将删除了注释行,并将所有内容转换成了我期望的形式。我成功获取了我的连接字符串:
$Conn01 = new-object System.Data.SqlClient.SqlConnection $json.ConnectionStrings.DefaultConnection
英文:
I found that I have comments in my json file. I ended up using:
$json = Get-Content '.appsettings.json' | Where-Object {$_ -notmatch '//'} | Out-String
$json = $json | ConvertFrom-Json
This removed the comment line and everything converted as I expected. I was able to get my connection string:
$Conn01 = new-object System.Data.SqlClient.SqlConnection $json.ConnectionStrings.DefaultConnection
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论