Test-Path错误而不是返回True / False

时间:2016-08-17 19:17:59

标签: powershell

这非常直截了当。我正在写一个powershell函数,我想验证参数是否是一个有效的目录,但是不是返回TrueFalseTest-Path是错误的?

这与我正在阅读的关于函数行为的内容相反。

if (Test-Path -PathType Container "asdf")
{
    Write-Output "Exists"
}
else
{
    Write-Output "Does not exist"
}

enter image description here

3 个答案:

答案 0 :(得分:2)

你接受的答案是正确的,但我想扩展你可以做的不同的事情。

直到最近,这是一个问题。 PowerShell's SQL server support has been vastly improved,以至于他们为此创建了一个新模块,因此,如果您仍在使用SQLPS,请考虑使用SqlServer模块。

使用SQLPS,它会自动将驱动器更改为SQLSERVER:提供商。

如果你必须继续使用或支持SQLPS并希望避免这种行为(它也可以使标签完成超级慢),我很喜欢这种模式:

Push-Location
Import-Module SQLPS
Pop-Location

这会将您当前的位置保存在位置堆栈中,导入模块(这将更改您的位置),然后将您之前的位置弹回,这样您就可以回到起步位置。

我强烈建议您查看使用新模块,因为它有一些非常重要的增强和改进。

答案 1 :(得分:1)

您在SQLSERVER驱动器中。您需要将您的位置更改回FileSystem驱动器。

答案 2 :(得分:0)

您已在SQLSERVER驱动器中设置。您需要回到本地文件系统。来吧,做一个

Set-Location C:

然后你就可以运行你的If语句了。

我会在第一个答案中对此进行评论,以澄清如何进入本地文件系统,但我的低声誉限制了我发表评论。