2011-04-14 21 views
3

我使用的公司为所有管理员级别帐户使用$符号进行前缀操作。麻烦,我知道。Powershell - 尝试对类似变量名称的字符串进行测试路径

我试图用test-path,看是否存在像这样的文件夹:

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

I型$adminsdb入禁区,点击OK

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

确实存在该文件夹,但.. $TSProfile_exist即将发生虚假

如何在用户名中处理$?我正在构建此应用程序,以便为环境中的用户提供快速统计信息。我们也有以#号为前缀的服务帐户。

回答

4

处理在PowerShell中的特殊caracters的方法是使用`(反引号)

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

成为

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

小心Test-Path一招,就是它的语义不该目录存在,但该目录是可读的。换句话说,如果您无法访问您测试的目录,即使目录存在,您也会收到falseSee this other entry

+0

那么,有没有一种方法来测试一个路径,而不必一一列举整个目录树和-match操作搜索? – user708516 2011-04-18 15:37:35

+0

你可以使用'Get-ChildItem -Path从哪里开始搜索-Include“Searched.File”-Recurse' – JPBlanc 2011-04-18 18:42:22

+0

这还需要很长的等待时间,而目录列出...有没有什么测试路径像这比获得孩子快吗? – user708516 2011-04-18 21:45:00

3

另一种选择是使用单引号字符串;在这种情况下,powershell不会扩展变量。

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

-Oisin

相关问题