После запуска invoke-sqlcmd почему поставщик файловой системы требуется для доступа к путям UNC-сервера

Прочитав следующую ссылку, я смог решить свою собственную проблему - но кто-нибудь знает, почему здесь требуется поставщик файловой системы после использования invoke-sqlcmd?

то есть. почему следующее не удается

$Doc_Folder = "\\Server.fqdn.com\c$\DocFiles" 
$DataSet = Invoke-Sqlcmd -Query $sqlQuery -ServerInstance $instanceName -username $SQLCreds.UserName -Password $pswd 
Get-ChildItem $Doc_Folder -recurse 

и почему работает следующее

$Doc_Folder = "Microsoft.PowerShell.Core\FileSystem::\\Server.fqdn.com\c$\DocFiles" 
$DataSet = Invoke-Sqlcmd -Query $sqlQuery -ServerInstance $instanceName -username $SQLCreds.UserName -Password $pswd 
Get-ChildItem $Doc_Folder -recurse 

По этой ссылке я нашел решение для добавления поставщика файловой системы Microsoft.PowerShell.Core\FileSystem:::
PowerShell-Invoke-SQLCMD-Get-ChildItem-не с вызовом метода

1 ответ

Решение

Модули SQL Server, которые поставлялись с SQLServer до августа 2016 года, изменили каталог на диск SQLSERVER:.

Чтобы обойти это, вы должны установить модуль SQLServer (из PSGallery) или, если вам нужно использовать более старые вещи (из соображений совместимости), вы можете сделать это:

pushd
import-module SQLPS
popd

Это восстановит текущий каталог после импорта модуля.

Другие вопросы по тегам