使用 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 替换文本文件的内容 的相关文章

  • Powershell Bash/Zsh 命令中的多个参数

    无法在 Powershell 中运行以下 Bash Zsh 命令 KeyPath Join Path Path this Plate ChildPath install tekton key kubectl create secret do
  • powershell 优雅/干净地关闭 Internet Explorer

    我想干净 优雅地关闭互联网浏览器 taskkill 会关闭它 但是当重新打开它时 它会询问您是否要重新打开上一个会话 尝试 CloseMainWindow 方法 通过向其主窗口发送关闭消息来关闭具有用户界面的进程 Get Process i
  • Powershell:启动进程不将参数传递给 cmd.exe

    这些是在 powershell 控制台 Windows 10 中运行的命令 username Username password Password securePassword ConvertTo SecureString password
  • Jenkins 执行 PowerShell 脚本

    我正在尝试从 Jenkins 运行 PowerShell 脚本 但它似乎完全忽略了执行策略 可以通过直接执行 powershell exe 或使用PowerShell插件 https wiki jenkins ci org display
  • 将 stdout 和 stderr 重定向到单独的文件时抑制 NativeCommandError 输出

    我有以下文件 test ps1 e test bat gt stdout txt 2 gt stderr txt test bat echo off echo write to stdout echo write to stderr gt
  • 如何从 powershell 中设置 bash 的环境变量?

    使用powershell我该如何设置 https askubuntu com q 1205227 45156 the 环境 https stackoverflow com q 5327495 262852变量 这里 特别 https sta
  • 自动递增 EC2 实例名称

    我在 Stackoverflow 上看到很多问题 询问是否有办法自动递增实例名称 例如 foo1 foo2 fooN 我想看看是否有办法在 Powershell 中执行此操作 我正在使用 AutoLaunchConfiguration AS
  • 如何使用 R 或 PowerShell 从文本文件中提取数据?

    我有一个包含如下数据的文本文件 This is just text Username SOMETHI C Text Account DFAG Finish time 1 JAN 2011 00 31 58 91 Process ID 202
  • 如何扩展和重写集合类中的 Add

    背景 我在 PowerShell 中有一个具有 4 个属性的数据对象 其中 3 个是字符串 第 4 个是哈希表 我想安排一个新类型 将其定义为该数据对象的集合 在这个集合类中 我希望强制执行一种特定的格式 这将使我在模块中其他地方的代码更加
  • 并行启动服务

    我有一个脚本可以检查不同服务器上的某些服务是否已启动 如果没有启动 该脚本应该启动该服务 问题是 它不会并行启动服务 而是等待每个服务启动 Code server list Get Content path D Path list of s
  • 在远程桌面上使用 Powershell 获取 Windows DisplayLanguage

    我正在尝试通过 powershell 获取 Windows 显示语言设置远程计算机 我尝试了 Get WinUserLanguageList 但这会返回所有语言的列表 Get WinSystemLocale 和 Get Culture 也不
  • 是否可以要求 Powershell 在 Windows 终端而不是新窗口中启动进程

    如果我在 Windows 终端 PowerShell 选项卡中运行 start process Powershell Verb runas 它将创建一个新窗口 有没有办法在 Windows 终端中创建选项卡 您必须使用 Windows 终端
  • PowerShell 模块中忽略 Write-Verbose

    我希望使用Write Verbose脚本和函数中的命令行开关 它在脚本 ps1 文件中按预期工作 但在模块 psm1 文件中则不然 该 commandlet 在模块中被忽略 运行以下脚本 PS gt scaffold ps1 verbose
  • powershell stdin 管道和重定向

    你好 我一直在制作一个小的跨平台脚 本 我可以将其卷曲并通过管道传输到bash和Powershell中 基本思想是服务器向解释器发送一个命令 然后它给出一个命令将所有输出重定向到标准输出 bash 中的一个例子是 some commands
  • 我的 Powershell GUI 界面在打开网格视图时不断调整大小

    我目前正在构建一个复制到剪贴板工具 其中显示存储在文件夹中的 txt 文件列表 并且我使用 out gridview 来允许用户更好地选择和过滤列表 我已附上图片以供参考 单击加载 out gridview 的按钮后如何停止调整大小 Too
  • 填充 datagridview

    我正在开发一个表单 它将在所有连接的驱动器中搜索 PST 文件 我可以使用以下命令让它工作 Get PSDrive PSProvider filesystem get childitem root include pst r select
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da
  • 在 .Net 中保持 Powershell 运行空间打开

    我正在尝试从 VB Net 中运行一些 PowerShell 代码 如果您知道的话 C 编码器也可能会有所帮助 代码的第一部分 我需要使用密码连接到 na 控制器 并且需要保持连接打开 我还有其他命令需要通过单击按钮来运行 获取文件 显示文
  • 远程计算机上的活动登录用户

    我正在使用下面的脚本来获取远程计算机上的登录用户 它工作正常 但我需要让用户处于 活动 状态 如何获取远程计算机上的活动登录用户 function Global Get LoggedOnUser Requires Version 2 0 C
  • 将 Powershell 输出转换为 Markdown 文件

    我有以下代码 xmlFile C Users kraer Desktop bom xml xml xml Get Content xmlFile xml bom components component ForEach Object fin

随机推荐