这非常直截了当。我正在写一个powershell函数,我想验证参数是否是一个有效的目录,但是不是返回True
或False
,Test-Path
是错误的?
这与我正在阅读的关于函数行为的内容相反。
if (Test-Path -PathType Container "asdf")
{
Write-Output "Exists"
}
else
{
Write-Output "Does not exist"
}
答案 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语句了。
我会在第一个答案中对此进行评论,以澄清如何进入本地文件系统,但我的低声誉限制了我发表评论。