0

我正在尝试从我们系统上的每个用户帐户中获取特定的日志文件。该文件位于每个人的相同路径中并且具有相同的名称。当前脚本只是在文件末尾添加了一个数字,但有人告诉我,知道每个文件属于谁将有助于下一阶段的故障排除。这是我开始挣扎的地方。

我尝试使用首字母Get-Childitem返回目录(在本例中为 UNC),然后通过管道将其输出到字符串Out-String。然后我希望使用替换来修剪用户名两侧的文本位并将其附加到文件名中。不过,这似乎根本不起作用。

所有目录都具有相同的路径:

\\files\users\[USERNAME]\TEMP\generic.log

我想知道我是否像往常一样使这里的步骤过于复杂?本质上,我需要从目录路径中进行修剪\\files\user\\temp\只留下用户名作为变量,以便我可以添加到复制命令中。我的使用尝试-replace告诉我我正在使用无效的正则表达式。

到目前为止的代码:

$file = Get-ChildItem -Path \\files\users\talexander\TEMP\ -Recurse -Force -Include generic.log | Select-Object Directory | Out-String  
$file -replace "\\xfiles\users\", ""

这是尝试使替换工作的第一步,但是,可惜,它失败了。感谢任何想法。

4

2 回答 2

0

在这种情况下,有一些简单的方法可以做到这一点。

如果您的路径为

\\files\users\[USERNAME]\TEMP\generic.log

那么它应该很容易使用替换:

$path.Replace("[USERNAME]","UserName")

由于路径是预先知道的,因此您也可以轻松地执行以下操作:

$rootPath = \\files\users\
$UserSubPath = "$UserName\TEMP\generic.log"

Copy-Item "$rootPath$UserSubPath", "C:\MyRepository\"
于 2013-04-24T11:46:11.883 回答
0

这个正则表达式可以帮助:

"\\files\users\talexander\TEMP\" -replace '(?:\\\\files\\users\\)(.*)(?:\\TEMP\\)', '$1'

亚历山大

或使用拆分:

("\\files\users\talexander\TEMP\" -split '\\')[4]
于 2013-04-24T11:41:21.523 回答