Powershell 为所有c:\users\*\AppData\Local执行函数
获得了以下脚本,我认为该脚本会很高兴地分别更新每个Powershell 为所有c:\users\*\AppData\Local执行函数,powershell,Powershell,获得了以下脚本,我认为该脚本会很高兴地分别更新每个C:\users\*\AppData\Local\Greeentram文件夹中指定的.ini文件 function Set-OrAddIniValue { Param( [string]$FilePath, [hashtable]$keyValueList ) $content = Get-Content $FilePath $keyValueList.GetEnumerator
C:\users\*\AppData\Local\Greeentram
文件夹中指定的.ini文件
function Set-OrAddIniValue {
Param(
[string]$FilePath,
[hashtable]$keyValueList
)
$content = Get-Content $FilePath
$keyValueList.GetEnumerator() | ForEach-Object {
if ($content -match "^$($_.Key)=") {
$content= $content -replace "^$($_.Key)=(.*)", "$($_.Key)=$($_.Value)"
} else {
$content += "$($_.Key)=$($_.Value)"
}
}
$content | Set-Content $FilePath
}
Set-OrAddIniValue -FilePath "C:\Users\*\AppData\Local\Greentram\SDA_Apps.ini" -keyValueList @{
UserName = "Dcebtcv7[[G"
UserEmail = "x}tpwpjmkxmvkYjmklzmx7zv7lr"
UserNo = "*++*(+"
UserKey = "^X(_0[*_/0L)\_0,U,-"
KEM = "H10"
}
它似乎在以某种方式将所有的.INI文件组合在一起,并为每个用户创建一个新的.INI文件
我错误地认为C:\Users\*\AppData\Local\Greentram\SDA\u Apps.ini
可以工作
我只想将这些特定值更新或添加到每个.INI文件中
Set-OrAddIniValue -FilePath "C:\Users\*\AppData\Local\Greentram\SDA_Apps.ini" -keyValueList @{
UserName = "Dcebtcv7[[G"
UserEmail = "x}tpwpjmkxmvkYjmklzmx7zv7lr"
UserNo = "*++*(+"
UserKey = "^X(_0[*_/0L)\_0,U,-"
KEM = "H10"
}
函数
Set或addinivalue
不处理路径中的通配符
$content = Get-Content $FilePath
...
$content | Set-Content $FilePath
第一条语句将所有匹配文件的内容读取到单个数组中。然后,第二条语句将整个修改的内容写入所有匹配的文件。(它将如何决定哪些内容属于哪个文件?)
您可以分别为每个文件调用函数:
Get-ChildItem "C:\Users\*\AppData\Local\Greentram\SDA_Apps.ini" | ForEach-Object {
Set-OrAddIniValue -FilePath $_.FullName -keyValueList ...
}
或者更改函数,使其在内部执行枚举:
function Set-OrAddIniValue {
Param(
[string]$FilePath,
[hashtable]$keyValueList
)
Get-ChildItem $FilePath | Where-Object {
-not $_.PSIsContainer # process only files
} | ForEach-Object {
$file = $_.FullName
$content = Get-Content $file
...
$content | Set-Content $file
}
}
在PowerShell v3及更高版本上,您可以使用Get ChildItem-File
,而不是通过Where object{-not$\psicontainer}
results=@();gci c:\users\*-Directory |%{$results+=“$($)\uU3.FullName)\AppData\Local\Greentram\SDA_Apps.ini”}
您可能还希望排除某些文件夹,如“Default”或“alluser”