Я хочу иметь в файле .ps1 некоторый код, создающий сеанс PSSession, который можно использовать в других сценариях .ps1 (во избежание дублирования кода).
Сначала я подумал, что мне нужна функция, которая создает PSSession и возвращает ее, но я не понимаю, как работают выходные данные функции.
Вот моя функция:
function newRemoteSession
{
param([string]$ipAddress)
$accountName = 'admin'
$accountPassword = 'admin'
$accountPasswordSecure = ConvertTo-SecureString $accountPassword -AsPlainText -Force
$accountCredential = New-Object System.Management.Automation.PSCredential ($accountName, $accountPasswordSecure)
Try
{
$remoteSession = New-PSSession -ComputerName $ipAddress -UseSSL -Credential $accountCredential -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -ErrorAction Stop
}
Catch [System.Management.Automation.RuntimeException] #PSRemotingTransportException
{
Write-Host 'Could not connect with default credentials. Please enter credentials...'
$remoteSession = New-PSSession -ComputerName $ipAddress -UseSSL -Credential (Get-Credential) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -ErrorAction Stop
Break
}
return $remoteSession
}
Однако, когда я звоню $s = newRemoteSession(192.168.1.10)
, $s
пусто.
Когда я запускаю скрипт с
Write-Host '00'
$s = newRemoteSession('192.168.1.10')
$s
Write-Host '02'
function newRemoteSession
{
........
Write-Host '01'
$remoteSession
}
Я получаю только «00» в консоли, но я знаю, что функция работает, потому что я получаю запрос учетных данных.
РЕДАКТИРОВАТЬ:
Хорошо, теперь это работает:
- Break in the Catch останавливал все.
- Вызов функции должен быть без скобок.
- Второй код был неправильным, потому что функция должна быть определена до вызова.
$s = newRemoteSession '192.168.1.10'
без скобок. - person JosefZ   schedule 02.03.2018$s = newRemoteSession '192.168.1.10'
и с$s = newRemoteSession -ipAddress '192.168.1.10'
- person Axel Williot   schedule 02.03.2018catch
. - person Matthew Wetmore   schedule 02.03.2018New-PSSession … -ErrorAction Stop
внутриCatch
блока. - person JosefZ   schedule 02.03.2018