【发布时间】:2022-11-29 11:02:48
【问题描述】:
1个
这是我创建的代码的一部分:
$NameOrigin = "BP |"
$NameBackup = "Backup"
Get-CimInstance win32_logicaldisk |
ForEach-Object{
if ($_.VolumeName -match "^$NameOrigin(.+)" -and $_.VolumeName -notmatch "^$NameBackup(.+)" ){
$Employee = $Matches[1]
$FSRootOrigin = "{0}{1}" -f $_.DeviceId,'\'
}
}
基本上它检查是否有任何驱动器带有 "BP |" 并且在卷标中不包含单词 "Backup" 并获取该驱动器的字母。
鉴于此,如果您查看 $Employee 变量,我的想法是它会提取 "|" 之后的内容,因此我可以在脚本的另一个步骤中使用它,但是由于某种原因,当驱动器被命名时它不起作用使用"|"。
当$NameOrigin变量为"BP -"时,我能够提取"-"之后的信息。
为什么使用"|" 不起作用?
我该如何解决这个问题?
【问题讨论】:
-
“|”是一个正则表达式符号,意思是“或”。你可以反斜杠它。
-
啊对了,那我怎么提到有“|”的单位呢?在卷标上并要求提取“|”之后的内容?
-
取决于你想提取多少。你有你想要完成的事情之前和之后吗?
-
分组后的东西?
\|(.*)并查看 $matches[1]。这是问题吗? -
基本上每个存储单元都遵循规则“BP | '员工姓名'”所以我需要提取“|”之后的所有内容这样我就可以获取员工的姓名,以便稍后在 robocopy 命令中使用。
标签: windows powershell