Powershell - Попытка проверить путь к строке, напоминающей имя переменной - PullRequest
3 голосов
/ 14 апреля 2011

Компания, для которой я работаю, ставит все свои учетные записи на уровне администратора со знаком $.Проблема, я знаю.

Я пытаюсь использовать test-path, чтобы увидеть, существует ли папка, например, так:

$username = read-host "Enter Login ID:"

Я набираю $adminsdb в поле и нажимаю ОК

##### Find TS Profile #####
$TSProfile_exist = test-path "\\server\tsprofiles$\$username"

Папка существует, но ... $TSProfile_exist появляется False

Как мне обработать $ в имени пользователя?Я создаю это приложение, чтобы вывести быструю статистику о пользователях в среде.У нас также есть служебные учетные записи с префиксом #.

Ответы [ 2 ]

4 голосов
/ 14 апреля 2011

Для обработки специальных символов в PowerShell используется ` (обратная черта)

$TSProfile_exist = test-path "\\server\tsprofiles$\$username"

становится

$TSProfile_exist = test-path "\\server\tsprofiles`$\$username"

Будьте осторожны хитрость с Test-Path заключается в том, что это семантика не в том, что каталог существует, а в том, что каталог доступен для чтения.Другими словами, если у вас нет доступа к каталогу, который вы тестируете, вы получите false, даже если каталог существует. Посмотреть эту другую запись .

3 голосов
/ 15 апреля 2011

Другой альтернативой является использование строк в одинарных кавычках;PowerShell не будет расширять переменные в этом случае.

test-path '\\server\path\$username'

-Oisin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...