当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Set-Content:PowerShell 写入文件的方式

作者:精品下载站 日期:2024-12-14 12:37:27 浏览:12 分类:玩电脑

Set-Content:PowerShell 写入文件的方式


Set-Content 是我离不开的核心 PowerShell cmdlet 之一。我仍然记得在使用 PowerShell 写入文件之前使用 VBscript。我记得总是试图记住我需要使用什么样的对象和方法名称。是 FileSystemObjectFileObject 还是什么?很痛苦!即使我确实记得方法名称是 CreateTextFile(),我总是忘记添加 True 作为第二个参数。

这是我正在谈论的怪物的一个例子。

Set objFSO=CreateObject("Scripting.FileSystemObject")
outFile="c:\file.txt"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write "test string"
objFile.Close

将该 VBScript 与此 PowerShell 进行比较:

Set-Content -Path 'C:\file.txt' -Value '测试字符串'

你更倾向哪个?我会采用PowerShell方式! PowerShell 方式使用名为 Set-content 的单个 cmdlet。此 cmdlet 使我们能够更轻松地使用 PowerShell 写入文件。此 PowerShell cmdlet 是一种内置 cmdlet,其用途只有一个:写入文件。

它可能有一些参数来稍微改变这种行为,但它只专注于写入文件。不要与 Add-Content 混淆,因为它们很相似。 Set-Content 覆盖整个文件,而 Add-Content 添加 到文件。当我第一次开始时,我多次艰难地了解到这一点!

创建文件/覆盖文件

Set-Content cmdlet 相当简单。下面是一个很好的例子。此示例显示 Set-Content 既可以创建不存在的文件,也可以替换预先存在的文件中的所有内容。

PS> Test-Path -Path C:\test.txt
False
PS> Set-Content -Path C:\test.txt -Value 'foo'
PS> Get-Content -Path C:\test.txt
foo
PS> Set-Content -Path C:\test.txt -Value 'bar'
PS> Get-Content -Path C:\test.txt
bar

输出到文件

可以输出到文件的 cmdlet 是 Out-File,但 Set-Content 可以执行相同的任务,尽管略有不同。

也许您想从一个文本文件中提取特定的文本片段并将输出行传输到另一个文件。通过使用 Get-Content 和 Set-content,您可以实现这一点。也许我有一个文本文件,其中包含一台服务器及其每行的状态。我想读取每个服务器的状态并将其输出到文件中。使用 Get-Content 读取文件并使用 Set-Content 写入文件,这是可能的。

PS> Get-Content -Path C:\test.txt
SRV1 Status: Up
SRV2 Status: Down
SRV3 Status: Up
PS> Get-Content -Path C:\test.txt | ForEach-Object {
>>> $srvName = $_.Split(' ')[0]
>>> Set-Content -Path "C:$srvName.txt" -Value $_
}
PS> Get-ChildItem -Filter 'SRV*'
Directory: C:\
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       10/29/2017  12:38 PM             17 SRV1.txt
-a----       10/29/2017  12:38 PM             19 SRv2.txt
-a----       10/29/2017  12:38 PM             17 SRV3.txt

PS> Get-ChildItem -Filter 'SRV*' | Get-Content
SRV1 Status: Up
SRV2 Status: Down
SRV3 Status: Up

Set-Content 是经常使用的核心 cmdlet 之一。它并不花哨,但每次都有效,是您应该在 PowerShell 技巧包中拥有的一个。

有关完整的详细信息,请查看 Set-Content Microsoft 文档。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯