使用 powershell 进行文本操作

text manipulation with powershell

我正在尝试格式化此命令的输出以仅像这样仅获取 dfs 命名空间:

\F-TYPHON\DATA13\AI-Project

我无法使用 Get-DfsnFolderTarget cmdlet,因为 RSAT-DFS-Mgmt-Con 没有安装在所有服务器上,我无法安装。

$DFSPath="\F-TYPHON\shared\AI-Project"

PS C:\> dfsutil client property state $DFSPath

Active, Online      \F-TYPHON\DATA13\AI-Project

Done processing this command.

我已经试过了。

PS C:\> $dfs=dfsutil client property state $DFSPath

PS C:\> $dfs.trimstart("Active, Online")

Method invocation failed because [System.Object[]] doesn't contain a method named 'trimstart'. At line:1 char:15 + $dfs.trimstart <<<< ("Active, Online") + CategoryInfo : InvalidOperation: (trimstart:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound

任何帮助将不胜感激我可以列出文件管理器的所有卷数据,但结构中有很多不连贯的地方,所以我只需要在文件管理器上列出 "shared" 下的共享文件夹,然后使用 dfsutil 对其进行处理获取绝对路径

使用正则表达式匹配dfsutil的文本输出:

$DFSPath="\F-TYPHON\shared\AI-Project"

if ((dfsutil client property state $DFSPath) -match "(?<=\s{2,})\\.*"){
   $DFSNameSpace = $Matches.Value
}
  • 此处 (?<=\s{2,})\\.* 匹配 lookbehind
    中的两个或多个空格 \s 后跟两个(转义的)反斜杠和该行的其余部分。

谢谢你的帮助 我找到了一个解决方案,我可以使用它不是 100% powershell 但我可以使用它以我可以在循环中使用它的格式提取输出,而不是使用 powershell

制作自动 robocopylines

这里是我找到的输出代码

$DFSPath="\F-TYPHON\shared\AI-Project"

$dfspath=(dfsutil 客户端 属性 状态 $DFSPath |findstr /i \F-TYPHON)|out-string

$dfs=$dfspath.Trimstart("Active, Online ")

写主机$dfs 输出是

\F-TYPHON\DATA13\AI-Project

它当然不是最好的,但我可以使用它

如果您有任何其他建议,欢迎