Я пытаюсь создать скрипт, который подключается к различным серверам, должен присоединить PSDrive и копировать файлы. Проблема заключается в том, что я не могу передать переменную в блок скриптов Invoke-Command.
workflow kopijobb {
param ([string[]]$serverList, $creds, $basePath)
foreach -parallel ($server in $serverList){
# Use the sequence keyword, to ensure everything inside of it runs in order on each computer.
sequence {
#Use the inlinescript keyword to allow PowerShell workflow to run regular PowerShell cmdlets
inlineScript{
$path = $using:basePath
Write-Host "Starting $using:server using $path"
#Create session for New-PSSession
$session = New-PSSession -ComputerName $using:server -Credential $using:creds
# Copy Java and recreate symlink
Invoke-Command -Session $session -ScriptBlock {
# Make a PSDrive, since directly copying from UNC-path doesn't work due to credential-issues
New-PSDrive -Name N -PSProvider FileSystem -root $using:path -Credential $using:creds | out-null
Я передаю сетевой путь в $ basePath и могу прочитать его внутри блока inlineScript (где я пытался сохранить его в новой переменной для тестирования), но как только я пытаюсь получить к нему доступ в New-PSDrive команда, переменная внезапно пуста / недоступна, и установка привода завершается с ошибкой Cannot bind argument to parameter 'Root' because it is null.
Я не понимаю, почему это не удается, поэтому вместо этого я обращаюсь к коллективной мудрости.