使用 PowerShell 替换文本文件的内容

2024-04-10

我浏览了这个网站,似乎找不到任何适合我情况的内容。基本上,我正在尝试向 NETLOGON 文件编写一个附加内容,以替换所有用户桌面上的文本文件中的文本。当前文本全面静态。

我想要更改的文本对于每个用户来说都是唯一的。我想将当前文本 (user1) 更改为用户 AD 用户名(即 johnd、janed 等)。我使用的是 Windows Server 2008 R2,所有工作站都是 Windows 7 Professional SP1 64 位。

这是我到目前为止所尝试过的(有一些变量,但由于某种原因,这些变量都不起作用):

gc c:\Users\%USERNAME%\desktop\VPN.txt' -replace "user1",$env:username | out-file c:\Users\%USERNAME%\desktop\VPN.txt

我没有收到错误,但它也没有返回到正常的“PS C:>”提示,只是“>>>”,并且文件没有按预期更改。


如果这就是您拥有代码的方式,那么我想这是因为您有一个开始单引号而没有结束单引号。您仍然会遇到另外两个问题,并且您的代码中有一个答案。这>>>是行继续字符,因为解析器知道代码不完整,并为您提供继续代码的选项。如果您故意在多行上编写一行代码,您会认为这是一个功能。

$path = "c:\Users\$($env:username)\desktop\VPN.txt" 
(Get-Content $path) -replace "user1",$env:username | out-file $path 
  • 由于您调用了该路径两次,因此将路径用引号引起来并使用了变量。
  • %name%在命令提示符中使用。 PowerShell 中的环境变量使用$env:您在片段中曾经做过的提供商。
  • -replace是一个正则表达式替换的工具,可以对抗Get-Content但您需要首先捕获子表达式中的结果。
  • 其次与-replace用于正则表达式,并且您的字符串不是基于正则表达式的,您可以使用.Replace()以及。
  • Set-Content通常优先于Out-File出于性能原因。

话虽这么说...

你也可以尝试这样的事情。

$path = "c:\Users\$($env:username)\desktop\VPN.txt"
(Get-Content $path).Replace("user1",$env:username) | Set-Content $path 

您只想替换第一次出现的内容吗?

您可以在此处使用一些正则表达式,并调整使用方式Get-Content

$path = "c:\Users\$($env:username)\desktop\VPN.txt" 
(Get-Content $path | Out-String) -replace "(.*?)user1(.*)",('$1{0}$2' -f $env:username) | out-file $path 

正则表达式将匹配整个文件。它捕获了两个组。

  1. (.*?)- 直到第一个“user1”
  2. (.*)- 之后的一切

然后我们使用格式运算符将新用户名夹在这些捕获组之间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PowerShell 替换文本文件的内容 的相关文章

  • 修改 xml 同时保留空格

    我在尝试替换 XML 文件中的属性同时保留空格时遇到了几个问题 尝试1 xml xml get content data xml xml Path To Attribute value set content data xml String
  • 在 PowerShell 中显示当前时间和时区

    我正在尝试使用时区显示系统上的当地时间 如何在任何系统上以最简单的方式显示这种格式的时间 时间 美国东部时间上午 8 00 34 我目前正在使用以下脚本 localtz System TimeZoneInfo Local Select Ob
  • 我应该安装哪个驱动程序才能使用 powershell 运行 mysqlcommand?

    我安装了 mysql 连接器 ODBC 5 1 8 来运行 sqlcommand 但出现此错误 Cannot find type MySql Data MySqlClient MySqlConnection make sure the as
  • 如何并行执行PowerShell函数多次?

    我不确定是否需要将其称为多线程 基于作业或异步的需求 但基本上我有一个 Powershell 脚本函数 它需要多个参数 并且我需要使用不同的参数多次调用它并让它们运行在平行下 目前 我这样调用该函数 Execute param1 param
  • Powershell从字符串中获取数字

    大家好 我正在尝试使用 powershell 从用户 ID 中获取号码 我们使用的格式是名字的第一个字母 姓氏的前四个字母和学生 ID 因此名为 John Smith ID 123456 的学生将是 jsmit123456 如果用户的名字少
  • 更改每个命令的 powershell 标题

    我想在窗口标题中显示我在 powershell 中输入的最后一个命令 以便更容易找到 目前我有 C gt host ui rawui WindowTitle 但这只是获取相对于我输入时的上一个命令 所以如果我有 C gt cd C gt h
  • powershell函数开关参数与字符串数组

    我正在努力理解以下函数的输出 function testApp param string appName switch sw false string test string test2 Write Host appName sw test
  • 将组“Everyone”添加到目录及其所有子目录

    我目前使用的是 Vista 32 位 如何添加 Windows 安全组 Everyone 并完全控制目录及其所有子目录和所有文件 有我可以使用的 powershell 脚本吗 Thanks 我已经扩展了 martona 的代码片段 并且能够
  • 输入屏蔽密码

    我从其他帖子中拼凑了一个简单的例子 CmdletBinding DefaultParameterSetName Secret Param Parameter Mandatory True string FileLocation Parame
  • 与 PowerShell CmdLets 互操作

    我一直在编写一些利用 App V 的 PowerShell Cmdlet 的实用程序 有趣的是 微软似乎只记录了 cmdlet 而不记录 Powershell 模块背后使用的 net 程序集 现在 我熟悉了 P Invoke 和 COM I
  • 使用以 some-pattern 开头并以 other-pattern 结尾的搜索模式过滤 powershell 输出

    我受到 bash 命令行的启发 其中sed输出以 BEGIN CERTIFICATE 开头并以 END CERTIFICATE 结尾的搜索模式 openssl s client connect www domain com 443 show
  • 在 DownloadProgressChanged 事件期间从 DownloadFileAsync 对事件处理程序的更新缓慢

    我的问题 我正在编写一个 PowerShell 脚本 在继续执行其他任务之前 该脚本需要从远程 Web 服务器下载几个大文件 我的项目要求之一是显示每次下载的进度 以便最终用户知道发生了什么 对另一个 SO 问题的回复包含一个使用注册事件和
  • Powershell 没有一些内置帮助主题

    我发现我的 powershell 没有一些帮助主题 例如about profiles 我试过update help但这没有帮助 有谁可以帮忙看一下吗 PS C gt systeminfo Host Name OS Name Microsof
  • 有哪些基于对象的 shell?

    我打算写一个面向对象的shell 基于Python 我已经有很多想法了 但在实现它之前 我想通过一些现有的 shell 来激发我的灵感 我所说的面向对象的基本意思是 参数不仅仅是字符串数组 而且是对象数组 返回值也是一个对象 不仅有 std
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • 启动 psexec 后获取进程 ID

    我有一个使用 psexec 在远程计算机上调用记事本的脚本 有什么办法可以在启动后获取进程ID吗 这是我所拥有的 PCname MyPC SessionID 2 Program Notepad exe FilePath C temp Fil
  • 通过PowerShell检索Azure AD应用程序的“API权限”

    出于报告和监视的目的 我想检索应用程序 应用程序注册 的 Azure 门户中显示的信息以获取 API 权限 我尝试过以下代码 app Get AzureADApplication ObjectId aa7e174d 2639 4ac7 9b
  • 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

    正如标题所示 我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥 如果我需要一个 cer文件或 pfx我可以通过 MMC 或 PowerShell 轻松导出这些文件pkiclient但我找不到获取私钥的方法 https
  • 有没有更快的方法来使用Powershell解析Excel文档?

    我正在与一个接口MS Excel文件通过Powershell 每个 Excel 文档可能有大约 1000 行数据 目前这个脚本似乎读取了Excel文件并以每 0 6 秒 1 条记录的速率将值写入屏幕 乍一看 这似乎非常慢 这是我第一次阅读E
  • 在 PowerShell 中从文件名中删除路径和扩展名

    我有一系列字符串 它们是文件的完整路径 我想只保存文件名 不保存文件扩展名和主路径 所以由此可知 c temp myfile txt to myfile 我实际上并没有遍历目录 在这种情况下类似于 PowerShell 的目录basenam

随机推荐