为什么 Windows Server 2016 中的 Add-Content 将文本写入单行而不是像我的 Windows 10 PC 那样的多行?
Why Add-Content in Windows Server 2016 is writing the text on a single line instead of on multiple lines like my Windows 10 PC?
我正在使用脚本在 Google 地图中使用他们的 API 搜索地点。我使用本地 PC (Windows 10) 作为我的开发环境。重要的代码部分如下:
$api_call_url ="https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=$lat,$lon&radius=$rad&type=$place_type&key=$Api_Key"
$api_call_response=Invoke-WebRequest $api_call_url
$api_call_obj = ConvertFrom-Json -InputObject $api_call_response
Add-Content "$file_name_json" $api_call_response
Google 返回的 json 存储在 $api_call_response 变量中,然后使用 Add-Content 附加到文本文件。脚本完成并测试后,我将其移至生产环境 (Windows Server 2016 Std)。 运行脚本,发现json写入文本文件的方式不一样
这是从我的 Windows 10 PC 写入文本文件的内容(每个结果多行)
{
"html_attributions" : [],
"results" : [],
"status" : "ZERO_RESULTS"
}
{
"html_attributions" : [],
"results" : [],
"status" : "ZERO_RESULTS"
}
这是从我的 Windows Server 2016 写入文本文件的内容(每个结果一行)
{ "html_attributions" : [], "results" : [], "status" : "ZERO_RESULTS"}
{ "html_attributions" : [], "results" : [], "status" : "ZERO_RESULTS"}
如果我将变量 $api_call_response 写输出到屏幕,它会显示多行。
我需要多行输出,因为有另一个脚本从我不需要的结果中清除文件,并且由于生成的文本文件附加了很多 json,它只创建一个 json 来自所有 json 的文件。但它期望结果文件按照我的开发环境编写的方式。显然,我是在尽量避免修改清理脚本。
PSVersion on Windows Server 2016: 5.1.14393.3053
PSVersion on Windows 10: 5.1.17763.771
有什么想法吗?
好吧,当用写字板打开文件时,它是按照我需要的方式写的,所以我想这一定是记事本显示文件的方式。
如果是将unix文本(\n)转换成windows文本(\r\n):
get-content file1 | set-content file2
或使用相同的文件:
(get-content file) | set-content file
记事本无法正确显示unix文本,但写字板可以。 (虽然记事本可以处理 unicode no bom。)
其他转换方式:Unix newlines to windows newlines (on Windows)
我正在使用脚本在 Google 地图中使用他们的 API 搜索地点。我使用本地 PC (Windows 10) 作为我的开发环境。重要的代码部分如下:
$api_call_url ="https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=$lat,$lon&radius=$rad&type=$place_type&key=$Api_Key"
$api_call_response=Invoke-WebRequest $api_call_url
$api_call_obj = ConvertFrom-Json -InputObject $api_call_response
Add-Content "$file_name_json" $api_call_response
Google 返回的 json 存储在 $api_call_response 变量中,然后使用 Add-Content 附加到文本文件。脚本完成并测试后,我将其移至生产环境 (Windows Server 2016 Std)。 运行脚本,发现json写入文本文件的方式不一样
这是从我的 Windows 10 PC 写入文本文件的内容(每个结果多行)
{
"html_attributions" : [],
"results" : [],
"status" : "ZERO_RESULTS"
}
{
"html_attributions" : [],
"results" : [],
"status" : "ZERO_RESULTS"
}
这是从我的 Windows Server 2016 写入文本文件的内容(每个结果一行)
{ "html_attributions" : [], "results" : [], "status" : "ZERO_RESULTS"}
{ "html_attributions" : [], "results" : [], "status" : "ZERO_RESULTS"}
如果我将变量 $api_call_response 写输出到屏幕,它会显示多行。
我需要多行输出,因为有另一个脚本从我不需要的结果中清除文件,并且由于生成的文本文件附加了很多 json,它只创建一个 json 来自所有 json 的文件。但它期望结果文件按照我的开发环境编写的方式。显然,我是在尽量避免修改清理脚本。
PSVersion on Windows Server 2016: 5.1.14393.3053
PSVersion on Windows 10: 5.1.17763.771
有什么想法吗?
好吧,当用写字板打开文件时,它是按照我需要的方式写的,所以我想这一定是记事本显示文件的方式。
如果是将unix文本(\n)转换成windows文本(\r\n):
get-content file1 | set-content file2
或使用相同的文件:
(get-content file) | set-content file
记事本无法正确显示unix文本,但写字板可以。 (虽然记事本可以处理 unicode no bom。)
其他转换方式:Unix newlines to windows newlines (on Windows)