1.02.2023

Powershell ile bilgisayarlar arasında dosya aktarımı

Eğer bir etki alanına üye iki bilgisayar söz konusuysa

PS> Copy-Item \\pc1\paylasim\dosya1 -Destination \\pc2\ortak

şeklinde dosya aktarımı yapılabilir. ama daha karmaşık bir durum olduğunu varsayalım. Bu iki bilgisayar da etki alanının üyesi olmasın. İki bilgisayar için de bir powershell uzak oturumu başlatmış olduğumuzu varsayalım

PS> $oturum1 = New-PSSession -Computername pc1 -Credential (Get-Credential "pc1\user1")

PS> $oturum2 = New-PSSession -Computername pc2 -Credential (Get-Credential "pc2\user2")

Maalesef, iki oturum arasında bir seferde dosya aktarabilmek için şöyle bir şansımız yok:

PS> Copy-Item C:\klasor1\dosya1.txt -Destination C:\klasor2 -FromSession $oturum1 -ToSession $oturum2

Bunu yapmayı denersek powershell bize FromSession ve ToSession parametrelerinin aynı anda kullanılamayacağını söyler. Bunun yerine kopyalamak istediğimiz dosyayı önce kendi bilgisayarımıza aktarabilir, daha sonra pc2'ye aktarabiliriz:

PS> Copy-Item C:\klasor1\dosya1.txt -Destination D:\depo -FromSession $oturum1

PS> Copy-Item D:\depo\dosya1.txt -Destination C:\klasor2 -ToSession $oturum2

Ya da pc1'deki oturuma girip, $oturum2 nesnesini bu bilgisayarda oluşturup, hedef dosyayı doğrudan pc2'ye aktarabiliriz. Burada sorun pc1'deki oturumda get-credential gibi bir cmdlet'i çağırmak olurdu. Bu durumda da iki seçeneğimiz var. Birincisi credential nesnesini kendi makinemizde oluşturup, bunu $using ile pc1'e göndermek:

PS> $cred2 = Get-Credential "PC2\user2"

PS> Enter-PSSession -Session $oturum1

[pc1] PS> $oturum_pc2 = New-PSSession -Computer pc2 -Credential $using:cred2

[pc1] PS> Copy-Item C:\klasor1\dosya1.txt -Destination C:\klasor2 -ToSession $oturum_pc2

İkinci seçeneğimizde ise credentials nesnesi yerine pc1 üzerindeki oturumda şifreyi açıkça yazmak:

PS> Enter-PSSession -Session $oturum1

[pc1] PS> $kullanici = "PC2\user2"

[pc1] PS> $parola = ConvertTo-SecureString -String "parolamiz" -AsPlainText -Force

[pc1] PS> $cred2 = New-Object -TypeName System.Management.Automation.PSCredential -Argumentlist $kullanici, $parola

[pc1] PS> $oturum_pc2 = New-PSSession -Computername pc2 -Credential $cred2

[pc1] PS> Copy-Item C:\klasor1\dosya1.txt -Destination C:\klasor2 -ToSession $oturum_pc2

En az güvenli olan yöntem, sanıyorum en sondaki oldu, çünkü parolayı açık açık girmek zorunda kaldık.

Hiç yorum yok: