gpt4 book ai didi

Powershell 远程处理 : using imported module cmdlets in a remote pssession

转载 作者:行者123 更新时间:2023-12-03 07:59:52 24 4
gpt4 key购买 nike

有没有办法在远程 session 中使用在本地 session 中导入的模块?我查看了 import-pssession,但我不知道如何获取本地 session 。这是我想做的一个示例。

import-module .\MyModule\MyModule.ps1
$session = new-pssession -computerName RemoteComputer
invoke-command -session $session -scriptblock { Use-CmdletFromMyModule }

另外,我不想在远程 session 中导入模块,因为 ps1 文件不在该服务器上。

最佳答案

我最终破解了这个工作。我所做的是创建一个本地 session ,将模块导入该 session 并使用 import-pssession 将模块从创建的本地 session 导入远程 session 。这很慢。如果有人有更好的方法来做到这一点,或者如果有人知道如何获取基本 session 的实例,我很乐意听取您的意见!

远程处理.psm1

function Export-ModuleToSession {
Param(
[ValidateNotNull()]
$session,
[ValidateNotNull()]
$modules
)

$computername = $env:computername

$modulesToImport = get-module -name $modules

invoke-command -session $session -argumentlist @($computername, $modulesToImport) -scriptblock {
Param(
$computername,
$modules
)

write-host ("Creating Temp Session On: " + $computername)

$localSession = New-psSession -computername $computername

$modules | foreach-object {
if($_.ModuleType -ne "Binary") {
$path = $_.path
}
else {
$path = join-path (split-path $_.Path) ("{0}.psd1" -f $_.name)
}

invoke-command -session $localSession -argumentList $path -scriptblock {
Param(
$path
)

$initializeDefaultBTSDrive = $false
set-executionpolicy unrestricted

write-host ("Importing Module To Temp Session: " + $path)
import-module $path
}
}

$initializeDefaultBTSDrive = $false

$modules | foreach-object {
write-host ("Exporting Module: " + $_.name)
import-psSession -session $localSession -Module $_.name | out-null
}
}
}

我的模块.psm1
function MyCmdlet {}

远程测试.ps1
import-module .\remoting.psm1
import-module .\MyModule.psm1

try
{
$remoteSession = New-PsSession -computerName "RemoteComputer"
Export-ModuleToSession -session $remoteSession -modules "MyModule"

Invoke-Command -session $remoteSession -scriptblock { MyCmdlet } -verbose -ea Stop
}
finally
{
Remove-PsSession $remoteSession -ea Continue
Remove-Module "Remoting" -ea Continue
Remove-Module "MyModule" -ea Continue
}

关于Powershell 远程处理 : using imported module cmdlets in a remote pssession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2830827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com