манипулирование текстом с PowerShell - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь отформатировать вывод этой команды, чтобы получить только пространство имен dfs:

\\F-TYPHON\DATA13\AI-Project

Я не могу использовать командлет Get-DfsnFolderTarget, поскольку 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")

Ошибка вызова метода, поскольку [System.Object []] не содержитметод с именем «trimstart».1 строкалюбая помощь будет оценена по достоинству. Я могу перечислить все данные тома для файлера, но в структуре есть много несоответствий, поэтому мне нужно только перечислить общую папку в папке «shared» на файлере, а затем обработать ее с помощью dfsutil, чтобы получить абсолютный путь

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

спасибо за вашу помощь Я нашел решение, которое я могу использовать таким образом, что это не 100% PowerShell, но я могу использовать его для извлечения выходных данных в формате, который я могу использовать в цикле, а затем сделать автоматизированные робокопилины с PowerShell

здесь код для вывода, который я нашел

$ DFSPath = "\ F-ТИФОН \ Shared \ AI-проект"

$ dfspath = (состояние свойства клиента dfsutil $ DFSPath | findstr / i \ F-TYPHON) | out-string

$ dfs = $ dfspath.Trimstart ("Активно, Онлайн")

write-host $ dfs выход

\ F-ТИФОН \ DATA13 \ AI-Project

это, конечно, не самый лучший, но я могу работать с ним

если у вас есть другие предложения, добро пожаловать

0 голосов
/ 23 апреля 2019

Используйте регулярное выражение, чтобы соответствовать текстовому выводу dfsutil:

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

if ((dfsutil client property state $DFSPath) -match "(?<=\s{2,})\\\\.*"){
   $DFSNameSpace = $Matches.Value
}
  • здесь (?<=\s{2,})\\\\.* соответствует двум или более пробелам \s в lookbehind
    с последующими двумя (экранированными) обратными слешами и остатком строки.
...