Aracılığıyla paylaş


Export-PSSession

Komutları başka bir oturumdan dışarı aktarır ve bir PowerShell modülüne kaydeder.

Sözdizimi

Export-PSSession
      [-OutputModule] <String>
      [-Force]
      [-Encoding <Encoding>]
      [[-CommandName] <String[]>]
      [-AllowClobber]
      [-ArgumentList <Object[]>]
      [-CommandType <CommandTypes>]
      [-Module <String[]>]
      [-FullyQualifiedModule <ModuleSpecification[]>]
      [[-FormatTypeName] <String[]>]
      [-Certificate <X509Certificate2>]
      [-Session] <PSSession>
      [<CommonParameters>]

Description

Export-PSSession cmdlet'i yerel veya uzak bir bilgisayardaki başka bir PowerShell oturumundan (PSSession) cmdlet'leri, işlevleri, diğer adları ve diğer komut türlerini alır ve bunları bir PowerShell modülüne kaydeder. Modüldeki komutları geçerli oturuma eklemek için Import-Module cmdlet'ini kullanın.

Komutları başka bir PSSession'dan geçerli oturuma aktaran Import-PSSessionaksine, Export-PSSession komutları bir modüle kaydeder. Komutlar geçerli oturuma aktarılmaz.

Komutları dışarı aktarmak için New-PSSession cmdlet'ini kullanarak dışarı aktarmak istediğiniz komutları içeren bir PSSession oluşturun. Ardından komutları dışarı aktarmak için Export-PSSession cmdlet'ini kullanın.

Komut adı çakışmalarını önlemek için, Export-PSSession için varsayılan değer geçerli oturumda bulunan komutlar dışında tüm komutları dışarı aktarmaktır. Dışarı aktarılacak komutları belirtmek için CommandName parametresini kullanabilirsiniz.

Export-PSSession cmdlet'i PowerShell'in örtük uzaktan iletişim özelliğini kullanır. Komutları geçerli oturuma aktardığınızda, bunlar özgün oturumda veya kaynak bilgisayarda benzer bir oturumda örtük olarak çalışır.

Örnekler

Örnek 1: PSSession'dan komutları dışarı aktarma

Bu örnek, yerel bilgisayardan Server01 bilgisayarına yeni bir PSSession oluşturur. Geçerli oturumda bulunanlar dışında tüm komutlar yerel bilgisayardaki Server01 adlı modüle aktarılır. Dışarı aktarma, komutların biçimlendirme verilerini içerir.

$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01

New-PSSession komutu, Server01 bilgisayarında bir PSSession oluşturur. PSSession, $S değişkeninde depolanır. Export-PSSession komutu, $S değişkeninin komutlarını ve biçimlendirme verilerini Server01 modülüne aktarır.

Örnek 2: Get ve Set komutlarını dışarı aktarma

Bu örnek, tüm Get ve Set komutlarını bir sunucudan dışarı aktarır.

$newSession = @{
    ConnectionUri = 'https://exchange.microsoft.com/mailbox'
    Credential = 'exchangeadmin01@hotmail.com'
    Authentication = 'Negotiate'
}
$S = New-PSSession @newSession

$exportSession = @{
    Session = $S
    Module = 'exch*'
    CommandName = 'Get-*', 'Set-*'
    FormatTypeName = '*'
    OutputModule = "$PSHOME\Modules\Exchange"
    Encoding = 'ascii'
}

Export-PSSession @exportSession

Bu komutlar, Get ve Set komutlarını uzak bilgisayardaki bir Microsoft Exchange Server ek bileşeninden yerel bilgisayardaki $PSHOME\Modules dizinindeki bir Exchange modülüne aktarır. Modülün $PSHOME\Modules dizinine yerleştirilmesi, modülün bilgisayarın tüm kullanıcıları tarafından erişilebilir olmasını sağlar.

Örnek 3: Uzak bilgisayardan komutları dışarı aktarma

Bu örnek, cmdlet'leri uzak bir bilgisayardaki PSSession'dan dışarı aktarır ve yerel bilgisayardaki bir modüle kaydeder. Modüldeki cmdlet'ler, kullanılabilir olmaları için geçerli oturuma eklenir.

$newSession = @{
    ComputerName = 'Server01'
    Credential = 'Server01\User01'
}
$S = New-PSSession @newSession

$exportSession = @{
    Session = $S
    OutputModule = 'TestCmdlets'
    Type = 'Cmdlet'
    CommandName = '*test*'
    FormatTypeName = '*'
}
Export-PSSession @exportSession

Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files

New-PSSession komutu, Server01 bilgisayarında bir PSSession oluşturur ve $S değişkenine kaydeder. Export-PSSession komutu, adları $S'daki PSSession'dan Test ile başlayan cmdlet'leri yerel bilgisayardaki TestCmdlets modülüne aktarır.

Remove-PSSession cmdlet'i geçerli oturumdan $S pssession siler. Bu komut, oturumdan içeri aktarılan komutları kullanmak için PSSession'un etkin olmaması gerektiğini gösterir. Import-Module cmdlet'i, TestCmdlets modülündeki cmdlet'leri geçerli oturuma ekler. Komut herhangi bir zamanda herhangi bir oturumda çalıştırılabilir.

Get-Help cmdlet'i, adları Test ile başlayan cmdlet'ler için yardım alır. Modüldeki komutlar geçerli oturuma eklendikten sonra, içeri aktarılan komutlar hakkında bilgi edinmek için Get-Help ve Get-Command cmdlet'lerini kullanabilirsiniz. Test-Files cmdlet'i Server01 bilgisayarından dışarı aktarıldı ve oturuma eklendi. Test-Files cmdlet'i, komutun içeri aktarıldığı bilgisayardaki bir uzak oturumda çalışır. PowerShell, TestCmdlets modülünde depolanan bilgilerden bir oturum oluşturur.

Örnek 4: Geçerli oturumdaki dışarı aktarma ve kopyalama komutları

Bu örnek, bir değişkende depolanan komutları geçerli oturuma aktarır.

Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands

Bu Export-PSSession komutu, $S değişkenindeki PSSession'daki tüm komutları ve tüm biçimlendirme verilerini geçerli oturuma aktarır. AllowClobber parametresi, geçerli oturumdaki komutlarla aynı adlara sahip komutlar içerir.

Örnek 5: Komutları kapalı pssession'dan dışarı aktarma

Bu örnek, dışarı aktarılan komutları oluşturan PSSession kapatıldığında özel seçeneklerle dışarı aktarılan komutların nasıl çalıştırıldığını gösterir.

Bir modül içeri aktarıldığında özgün uzak oturum kapatılırsa modül, kaynak bilgisayara bağlanan tüm açık uzak oturumları kullanır. Kaynak bilgisayarda geçerli bir oturum yoksa modül bir oturumu yeniden başlatır.

Dışarı aktarılan komutları uzak oturumda özel seçeneklerle çalıştırmak için modülü içeri aktarmadan önce bu seçeneklerle bir uzak oturum oluşturmanız gerekir. New-PSSession parametresiyle cmdlet'ini kullanın

$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName Server01 -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName Server01 -SessionOption $Options
Import-Module Server01

New-PSSessionOption cmdlet'i bir PSSessionOption nesnesi oluşturur ve nesneyi $Options değişkenine kaydeder. New-PSSession komutu, Server01 bilgisayarında bir PSSession oluşturur. SessionOption parametresi $Optionsiçinde depolanan nesnesini kullanır. Oturum $S değişkeninde depolanır.

Export-PSSession cmdlet'i, $S'daki PSSession komutlarını Server01 modülüne aktarır. Remove-PSSession cmdlet'i $S değişkenindeki PSSession'i siler.

New-PSSession cmdlet'i, Server01 bilgisayarına bağlanan yeni bir PSSession oluşturur. SessionOption parametresi $Optionsiçinde depolanan nesnesini kullanır. Import-Module cmdlet'i Komutları Server01 modülünden içeri aktarır. Modüldeki komutlar Server01 bilgisayarındaki PSSession'da çalıştırılır.

Parametreler

-AllowClobber

Geçerli oturumdaki komutlarla aynı adlara sahip olsalar bile belirtilen komutları dışarı aktarır.

Geçerli oturumda komutla aynı ada sahip bir komutu dışarı aktarırsanız, dışarı aktarılan komut özgün komutları gizler veya değiştirir. Daha fazla bilgi için bkz. about_Command_Precedence.

Tür:SwitchParameter
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-ArgumentList

Belirtilen bağımsız değişkenlerin (parametre değerleri) kullanılmasından kaynaklanan komutun değişkenini dışarı aktarır.

Örneğin, Get-Item komutunun değişkenini $SPSSession'daki sertifika (Cert:) sürücüsünde dışarı aktarmak için Export-PSSession -Session $S -Command Get-Item -ArgumentList Cert:yazın.

Tür:Object[]
Diğer adlar:Args
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Certificate

Biçim dosyalarını (*) imzalamak için kullanılan istemci sertifikasını belirtir. .psm1 oluşturduğu modülde Format.ps1xml) veya betik modülü dosyaları (Export-PSSession). Sertifikayı içeren bir değişken veya sertifikayı alan bir komut veya ifade girin.

Sertifika bulmak için Get-PfxCertificate cmdlet'ini veya Sertifika (Sertifika:) sürücüsündeki Get-ChildItem cmdlet'ini kullanın. Sertifika geçerli değilse veya yeterli yetkiye sahip değilse, komut başarısız olur.

Tür:X509Certificate2
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-CommandName

Yalnızca belirtilen adlara veya ad desenlerine sahip komutları dışarı aktarır. Joker karakterlere izin verilir. CommandName veya diğer adını Namekullanın.

Varsayılan olarak, Export-PSSession geçerli oturumdaki komutlarla aynı adlara sahip komutlar dışında PSSession'dan tüm komutları dışarı aktarır. Bu, komutların gizlenmesini veya geçerli oturumdaki komutlar tarafından değiştirilmesini engeller. Diğer komutları gizleyen veya değiştirenler bile olmak üzere tüm komutları dışarı aktarmak için AllowClobber parametresini kullanın.

CommandName parametresini kullanırsanız, FormatTypeName parametresini kullanmadığınız sürece komutların biçimlendirme dosyaları dışarı aktarılmaz. Benzer şekilde, FormatTypeName parametresini kullanırsanız, CommandName parametresini kullanmadığınız sürece hiçbir komut dışarı aktarılmaz.

Tür:String[]
Diğer adlar:Name
Position:2
Default value:All commands in the session.
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:True

-CommandType

Yalnızca belirtilen komut nesnesi türlerini dışarı aktarır. CommandType veya diğer adını kullanın Tür.

Bu parametre için kabul edilebilir değerler aşağıdaki gibidir:

  • Alias: Geçerli oturumdaki tüm PowerShell diğer adları.
  • All: Tüm komut türleri. Get-Command -Name *eşdeğerdir.
  • Application: .txt, .exeve .dll dosyaları dahil olmak üzere PATH ortam değişkeninde ($Env:PATH) listelenen yollardaki PowerShell dosyaları dışındaki tüm dosyalar.
  • Cmdlet: Geçerli oturumdaki cmdlet'ler. Cmdlet varsayılandır.
  • Configuration: PowerShell yapılandırması. Daha fazla bilgi için bkz. about_Session_Configurations.
  • ExternalScript: PATH ortam değişkeninde (.ps1) listelenen yollardaki tüm $Env:PATH dosyaları.
  • Filter ve Function: Tüm PowerShell işlevleri.
  • Geçerli oturumdaki Betik bloklarını Script.
  • PowerShell iş akışı Workflow. Daha fazla bilgi için bkz. about_Workflows.

Bu değerler, bayrak tabanlı bir numaralandırma olarak tanımlanır. Bu parametreyi kullanarak birden çok bayrak ayarlamak için birden çok değeri birlikte birleştirebilirsiniz. Değerler CommandType parametresine bir değer dizisi veya bu değerlerin virgülle ayrılmış dizesi olarak geçirilebilir. cmdlet'i bir ikili OR işlemi kullanarak değerleri birleştirir. Değerleri dizi olarak geçirmek en basit seçenektir ve değerler üzerinde sekme tamamlama özelliğini kullanmanıza da olanak tanır.

Tür:CommandTypes
Diğer adlar:Type
Kabul edilen değerler:Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow
Position:Named
Default value:All commands in the session.
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Encoding

Hedef dosya için kodlama türünü belirtir. Varsayılan değer utf8NoBOM.

Bu parametre için kabul edilebilir değerler aşağıdaki gibidir:

  • ascii: ASCII (7 bit) karakter kümesi için kodlamayı kullanır.
  • ansi: Geçerli kültürün ANSI kod sayfasının kodlamasını kullanır. Bu seçenek PowerShell 7.4'e eklendi.
  • bigendianunicode: Büyük endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.
  • bigendianutf32: Büyük endian bayt sırasını kullanarak UTF-32 biçiminde kodlar.
  • oem: MS-DOS ve konsol programları için varsayılan kodlamayı kullanır.
  • unicode: Little-endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.
  • utf7: UTF-7 biçiminde kodlar.
  • utf8: UTF-8 biçiminde kodlar.
  • utf8BOM: Bayt Sırası İşareti (BOM) ile UTF-8 biçiminde kodlar
  • utf8NoBOM: Bayt Sırası İşareti (BOM) olmadan UTF-8 biçiminde kodlar
  • utf32: UTF-32 biçiminde kodlar.

PowerShell 6.2'den başlayarak, Kodlama parametresi, kayıtlı kod sayfalarının sayısal kimliklerine (-Encoding 1251gibi) veya kayıtlı kod sayfalarının dize adlarına (-Encoding "windows-1251"gibi) de izin verir. Daha fazla bilgi için Encoding.CodePageiçin .NET belgelerine bakın.

PowerShell 7.4'den başlayarak, Ansi parametresinin değerini kullanarak geçerli kültürün ANSI kod sayfasının sayısal kimliğini el ile belirtmek zorunda kalmadan geçirebilirsiniz.

Not

UTF-7* artık kullanılması önerilmez. PowerShell 7.1'den itibaren, utf7 parametresi için belirtirseniz bir uyarı yazılır.

Tür:Encoding
Kabul edilen değerler:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Force

Dosya salt okunur özniteliğine sahip olsa bile mevcut bir veya daha fazla çıktı dosyasının üzerine yazar.

Tür:SwitchParameter
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-FormatTypeName

Biçimlendirme yönergelerini yalnızca belirtilen Microsoft .NET Framework türleri için dışarı aktarır. Tür adlarını girin. Varsayılan olarak, Export-PSSessionSystem.Management.Automation ad alanında bulunmayan tüm .NET Framework türleri için biçimlendirme yönergelerini dışarı aktarır.

Bu parametrenin değeri, komutların içeri aktarıldığı oturumda Get-FormatData komutu tarafından döndürülen bir türün adı olmalıdır. Uzak oturumdaki tüm biçimlendirme verilerini almak için *yazın.

FormatTypeName parametresini kullanırsanız, CommandName parametresini kullanmadığınız sürece hiçbir komut dışarı aktarılmaz.

CommandName parametresini kullanırsanız, FormatTypeName parametresini kullanmadığınız sürece komutların biçimlendirme dosyaları dışarı aktarılmaz.

Tür:String[]
Position:3
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-FullyQualifiedModule

Değer bir modül adı, tam modül belirtimi veya modül dosyasının yolu olabilir.

Değer bir yol olduğunda, yol tam veya göreli olabilir. Göreli yol, using deyimini içeren betike göre çözümlenir.

Değer bir ad veya modül belirtimi olduğunda PowerShell, belirtilen modülü psmodulepath arar.

Modül belirtimi, aşağıdaki anahtarlara sahip bir karma tablodur.

  • ModuleName - Gerekli Modül adını belirtir.
  • GUID - İsteğe bağlı Modülün GUID değerini belirtir.
  • Ayrıca aşağıdaki üç anahtardan en az birini belirtmek için Gerekli .
    • ModuleVersion - Modülün kabul edilebilir en düşük sürümünü belirtir.
    • MaximumVersion - Modülün kabul edilebilir en yüksek sürümünü belirtir.
    • RequiredVersion - Modülün tam ve gerekli bir sürümünü belirtir. Bu, diğer Sürüm anahtarlarıyla kullanılamaz.

Modülü parametresiyle aynı komutta FullyQualifiedModule parametresini belirtemezsiniz. iki parametre birbirini dışlar.

Tür:ModuleSpecification[]
Position:Named
Default value:None
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Module

Yalnızca belirtilen PowerShell ek bileşenlerindeki ve modüllerindeki komutları dışarı aktarır. Ek bileşen ve modül adlarını girin. Joker karakterlere izin verilmez.

Daha fazla bilgi için bkz. Import-Module ve about_PSSnapins.

Tür:String[]
Diğer adlar:PSSnapin
Position:Named
Default value:All commands in the session.
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-OutputModule

Export-PSSessiontarafından oluşturulan modül için isteğe bağlı bir yol ve ad belirtir. Varsayılan yol $HOME\Documents\WindowsPowerShell\Modules. Bu parametre gereklidir.

Modül alt dizini veya Export-PSSession oluşturulan dosyalardan herhangi biri zaten varsa, komut başarısız olur. Var olan dosyaların üzerine yazmak için Zorla parametresini kullanın.

Tür:String
Diğer adlar:PSPath, ModuleName
Position:1
Default value:$HOME\Documents\WindowsPowerShell\Modules
Gerekli:True
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Session

Komutların dışarı aktarıldığı PSSession'ı belirtir. Get-PSSession komutu gibi bir oturum nesnesi veya oturum nesnesi alan bir komut içeren bir değişken girin. Bu parametre gereklidir.

Tür:PSSession
Position:0
Default value:None
Gerekli:True
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

Girişler

None

Nesneleri bu cmdlet'e yöneltemezsiniz.

Çıkışlar

FileInfo

Bu cmdlet, oluşturduğu modülü oluşturan dosyaların listesini döndürür.

Notlar

Export-PSSession, PowerShell uzaktan iletişim altyapısını kullanır. Bu cmdlet'i kullanmak için bilgisayarın uzaktan iletişim için yapılandırılması gerekir. Daha fazla bilgi için bkz. about_Remote_Requirements.

PowerShell sağlayıcısını dışarı aktarmak için Export-PSSession kullanamazsınız.

Dışarı aktarılan komutlar, dışarı aktarıldıkları PSSession'da örtük olarak çalışır. Komutları uzaktan çalıştırmanın ayrıntıları tamamen PowerShell tarafından işlenir. Dışarı aktarılan komutları yerel komutları çalıştırdığınız gibi çalıştırabilirsiniz.

Export-ModuleMember pssession hakkındaki bilgileri dışarı aktarmış olduğu modülde yakalar ve kaydeder. Modülü içeri aktardığınızda komutların dışarı aktarıldığı PSSession kapatılırsa ve aynı bilgisayarda etkin PSSessions yoksa modüldeki komutlar PSSession'ı yeniden oluşturma girişiminde bulunur. PSSession yeniden oluşturma girişimleri başarısız olursa, dışarı aktarılan komutlar çalışmaz.

modülde Export-ModuleMember yakalayan ve kaydeden oturum bilgileri, $PSSessionOption tercih değişkeninde belirttiğiniz veya , New-PSSessionveya Enter-PSSession cmdlet'lerinin Invoke-Command parametresini kullanarak oturum seçeneklerini içermez. Modülü içeri aktardığınızda özgün PSSession kapatılırsa, modül varsa aynı bilgisayara başka bir PSSession kullanır. İçeri aktarılan komutların doğru yapılandırılmış bir oturumda çalışmasını sağlamak için, modülü içeri aktarmadan önce istediğiniz seçenekleri içeren bir PSSession oluşturun.

Dışarı aktarılacak komutları bulmak için Export-PSSession, PSSession'da bir Invoke-Command komutu çalıştırmak için Get-Command cmdlet'ini kullanır. Komutların biçimlendirme verilerini almak ve kaydetmek için Get-FormatData ve Export-FormatData cmdlet'lerini kullanır. bir Invoke-Command komutu çalıştırdığınızda Get-Command, Get-FormatData, Export-FormatDatave Export-PSSession hata iletileri görebilirsiniz. Ayrıca, Export-PSSessionGet-Command, Get-FormatData, Select-Objectve Get-Help cmdlet'lerini içermeyen bir oturumdan komutları dışarı aktaramaz.

Export-PSSession, komutun ilerleme durumunu görüntülemek için Write-Progress cmdlet'ini kullanır. Komut çalışırken ilerleme çubuğunu görebilirsiniz.

Dışarı aktarılan komutlar, Not Defteri gibi bir kullanıcı arabirimiyle program başlatamama da dahil olmak üzere diğer uzak komutlarla aynı sınırlamalara sahiptir.

PowerShell profilleri PSSessions içinde çalıştırılmadığından, bir profilin oturuma eklediği komutlar Export-PSSessioniçin kullanılamaz. Komutları bir profilden dışarı aktarmak için Invoke-Command komutunu kullanarak komutları dışarı aktarmadan önce PSSession'da profili el ile çalıştırın.

Export-PSSession oluşturulan modül, komut biçimlendirme verilerini içeri aktarmasa bile bir biçimlendirme dosyası içerebilir. Komut biçimlendirme verilerini içeri aktarmazsa, oluşturulan biçimlendirme dosyaları biçimlendirme verileri içermez.