2016-06-03 2 views
2

Кто-нибудь знает, как получить текущую рабочую папку DSC?Как получить текущую рабочую папку Windows DSC (например, « DSC.0»)?

На сервере, при запуске DSC, он генерирует stucture папку вроде следующего:

C: \ Packages \ Plugins \ Microsoft.Powershell.DSC \ 2.18.0.0 \ DSCWork \ DSC.0

Единственная проблема, когда DSC получает новую версию, она увеличивает «.X» папку .. Однако, когда работает DSC, нет четкого способа, как решить текущую папку из блока сценария предсказуем:

Script GetDscCurrentPath 
    { 
     TestScript = { 
      return $false 
     } 
     SetScript ={ 
      Write-Verbose (Get-Item 'C:\%path_to_dsc%\FileInsideMyDscAsset.txt') 
     } 
     GetScript = { @{Result = "GetDscCurrentPath"} } 
    } 

Мысли? Заранее спасибо!!!

ответ

2

Расширение DSC не предоставляет переменную или функцию для получения текущего рабочего каталога, но поскольку ваш скрипт/модуль находится в каталоге, вы можете использовать PSScriptRoot для получения каталога. Вот пример:

Write-Verbose -Message "PSScriptRoot: $PSScriptRoot" -Verbose 

# Note PSScriptRoot will change when the extension executes 
# your configuration function. So, you need to save the value 
# when your configuration is loaded 
$DscWorkingFolder = $PSScriptRoot 

configuration foo { 

    Script GetDscCurrentPath 
    { 
     TestScript = { 
      return $false 
     } 
     SetScript ={ 
      Write-Verbose $using:DscWorkingFolder 
     } 
     GetScript = { @{Result = $using:DscWorkingFolder} } 
    } 
} 
+0

Я обновил данные за редактирование, которое вы попытались. Я не согласен с комментариями рецензентов. – TravisEz13

+0

+1 В каждой другой ситуации я видел '$ scriptPath = Split-Path $ MyInvocation.MyCommand.Path', рекомендованный как способ получить рабочий путь. Однако внутри движка DSC происходит сбой «Split-Path» и ваш метод работает. – sirdank

+0

'$ PSScriptRoot' был добавлен в более позднюю версию PowerShell, но он был там вместе с DSC. Это намного проще использовать. – TravisEz13

Смежные вопросы