使用PowerShell读取和更新文件

时间:2013-06-10 12:38:22

标签: powershell powershell-v2.0

我使用.txt或.config中的powershell创建了一个日志文件。它看起来像:

# Hello
## This is readme.txt file
## This is commented line
# This is powershell command output
#
# File generated for read, re-load and edit the values
## -- many more comment is there
# Users can change values..
## There is no relation between $RegPath and $RegValue, this are only variables.

# this are registry path,
$RegPath = (
"\\hklm\software\microsoft\123",
"\\hklm\software\Adobe\123",
"\\hklm\software\Fax\123",
"\\hklm\software\IE\123");

# this are registry value.
$RegValue = (
"0",
"123",
"abc",
"456asdccxv",
"update",
"serv");

#this are some services with 0/1
# Win 7 OS exist
$IsWin7OS = 1

# Service pack installed
$IsSPInstalled = 0

# Check office
$MSOffice = 1

# This setting name is
$SettingName = "ReadMe.txt"

这是示例ReadMe.txt。我想在powershell中读取此文件,并希望在powershell平台中获取$ RegPath,$ RegValue,$ IsWin7OS,$ IsSPInstalled,$ MSOffice和$ SettingName的值。然后我将更新此值并再次保存在同一个文件中。

1 个答案:

答案 0 :(得分:1)

免责声明:这是一种安全性最差的做法。这真的很危险。也就是说,读取这些数据的简便方法是:

PS> Invoke-Expression (Get-Content C:\readfile.txt -Raw)
PS> $RegPath[0]
\\hklm\software\microsoft\123

不好的原因是,如果有人将此remove-item c:\ -recurse -force添加到文件中,上面的命令将执行该操作,这将是一个糟糕的一天。我建议您将数据放在.psd1文件中,如果您可以使用哈希表的形式。在这种情况下,PowerShell不会执行任意代码。或者您可以将数据存储为CLIXML或JSON,然后使用Import-Csv或ConvertFrom-Json将其读回。