2016-08-17 109 views
0

這是非常直截了當的。我正在寫一個PowerShell功能,我想驗證,如果一個參數是一個有效的目錄,而不是返回TrueFalse,Test-Path是錯誤?測試路徑錯誤而不是返回True/False

這與我正在閱讀的有關函數行爲的內容相反。

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

enter image description here

回答

1

你在SQLSERVER驅動器。您需要將您的位置更改回FileSystem驅動器。

+0

哦,我沒有意識到SQL服務器上的PowerShell會在某種驅動器。有沒有標準的方法來默認到FileSystem驅動器,或者我只是'Set-Location $ PSScriptRoot'? –

0

您在SQLSERVER驅動器中進行設置。你需要回到你的本地文件系統。繼續並做一個

Set-Location C: 

然後你就可以運行你的If語句。

我會評論這第一個答案,是爲了澄清如何到達本地文件系統,但我的低信譽限制了我的評論。

2

你接受的答案是對的,但我想擴展你可以做的不同。

直到最近這都是一個問題。 PowerShell's SQL server support has been vastly improved,以至於他們爲它創建了一個新模塊,所以如果您仍在使用SQLPS,請改用SqlServer模塊。

隨着SQLPS,它會自動將驅動器更改爲SQLSERVER:供應商。

如果您必須繼續使用或支持SQLPS,並希望避免這種行爲(它也可以使標籤完成超慢),我喜歡這種模式:

Push-Location 
Import-Module SQLPS 
Pop-Location 

這可以節省您的當前位置位置堆棧,導入模塊(這將改變你的位置),然後彈出你以前的位置,所以你回到你開始的地方。

我強烈建議你看看使用新模塊,因爲它有一些非常重要的增強和改進。

+1

偉大的信息!我是一名開發人員,但仍在發展我的PowerShell基礎並熱愛學習新事物。 –

相關問題