Мне было дано задание установить программное обеспечение (msi) на серверы (2008,2012,2016), которые разбросаны по нескольким доменам. Хитрость заключается в том, чтобы скопировать установочные файлы конфигурации из UN C, расположенного в другом домене, на каждый сервер локально. Разные версии PowerShell ведут себя по-разному. Первоначально на Server 2016 я попытался New-PSSession и -FromSession переключиться, чтобы установить sh соединение с сервером (успешно), который имел путь UN C, и скопировать так :
$creds = Get-Credential -Username "<domain_with_unc_share>\$($env:username)"
$unc_server_session = New-PSSession -ComputerName unc_server -Credential $creds
Copy-Item "d:\share\*.*" -Destination "c:\temp\" -FromSession $unc_server_session -Recurse
-FromSession Коммутатор был представлен с PS5 и хорошо работает с Sevrer 2016, но все, что ниже, и это не удается. Это явно не работает для Windows 2008/2012.
Затем я попытался использовать только UN C в Copy-Item следующим образом:
$creds = Get-Credential -Username "<domain_with_unc_share>\$($env:username)"
Copy-Item "\\unc_server\share\*.*" -Destination "c:\temp\" -Credential $creds -Recurse
Это дает мне ошибка, связанная с тем, что переключатель -Credential не может использоваться с Copy-Item и откладывает использование New-PSDrive
Copy-Item : Cannot retrieve the dynamic parameters for the cmdlet. The FileSystem provider supports credentials only
on the New-PSDrive cmdlet. Perform the operation again without specifying credentials.
At line:1 char:1
+ Copy-Item "\\unc_server\share\ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Copy-Item], ParameterBindingException
+ FullyQualifiedErrorId : GetDynamicParametersException,Microsoft.PowerShell.Commands.CopyItemCommand
Затем я попытался следующее:
$creds = Get-Credential -Username "<domain_with_unc_share>\$($env:username)"
New-PSDrive -Name Y -PSProvider filesystem -Root "\\unc_server\share" -Credential $creds
Copy-Item "Y:\*.*" -Destination "c:\temp\" -Recurse
Все еще не доволен, он говорит мне, что мой путь ООН C не существует:
New-PSDrive : The specified drive root "\\unc_server\share"
either does not exist, or it is not a folder.
At line:1 char:1
+ New-PSDrive -Name "Y" -PSProvider filesystem -Root "\\unc_server\share ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (Y:PSDriveInfo) [New-PSDrive], IOException
+ FullyQualifiedErrorId : DriveRootError,Microsoft.PowerShell.Commands.NewPSDriveCommand
Я теряюсь в том, как умиротворить Бога PowerShell так что работает на PS3,4,5. Есть предложения?