Giriş
Uzak bilgisayara Copy-Item kullanırken hedef yolur belirtmek için iki yöntem var. Farklarını bilmiyorum
1. New-PSDrive
New-PSDrive ile yeni bir sadece PowerShell'de görülen drive yaratmak ve buraya kopyalamak
Örnek
Şöyle yaparız. "\\machine1\abc\123\log 1.zip" dosyası diğer makinedeki "\\machine2\\c$\Logs\" dizinine kopyalanır. PSDrive isimleri olarak source ve target kullanılıyor.
New-PSDrive komutuna -Credential seçeneği ile kullanıcı adı + şifre bilgisini geçmek gerekiyor.
Şöyle yaparız.
Bu komutu şöyle kullanmak yanlış.
-Path ile source dosya/dizin belirtilir. -Destination ile target dosya/dizin belirtilir
Örnek
Şöyle yaparız.
Komutu try/Catch içinde kullanabilmeyi sağlar.
Örnek
Şöyle yaparız.
Komutun başarılı olup olmadığına dair bir sonuç dönmesini sağlar.
Örnek
Şöyle yaparız.
Uzak bilgisayara Copy-Item kullanırken hedef yolur belirtmek için iki yöntem var. Farklarını bilmiyorum
1. New-PSDrive
New-PSDrive ile yeni bir sadece PowerShell'de görülen drive yaratmak ve buraya kopyalamak
Örnek
Şöyle yaparız. "\\machine1\abc\123\log 1.zip" dosyası diğer makinedeki "\\machine2\\c$\Logs\" dizinine kopyalanır. PSDrive isimleri olarak source ve target kullanılıyor.
New-PSDrive -Name source -PSProvider FileSystem -Root \\machine1\abc\123 | Out-Null
New-PSDrive -Name target -PSProvider FileSystem -Root \\machine2\c$\Logs | Out-Null
Copy-Item -Path source:\log_1.zip -Destination target:
Remove-PSDrive source
Remove-PSDrive target
Örnek - Farklı Domain'lerdeki Bilgisayarlar İçinNew-PSDrive komutuna -Credential seçeneği ile kullanıcı adı + şifre bilgisini geçmek gerekiyor.
Şöyle yaparız.
$password = Get-Content E:\Scripts\password.txt | ConvertTo-SecureString
$credentials = New-Object -typename System.Management.Automation.PSCredential
-argumentlist "domain\username",$pass
New-PSDrive -Name Z -PSProvider filesystem -Root "\10.15.2.5\Baseline$"
-Credential $creds
Remove-Item -Path Z:\ -filter *.bak
Copy-Item -filter *.bak E:\Backup -Destination Z:\ -ErrorAction SilentlyContinue
-ErrorVariable A
Remove-PSDrive Z
Şöyle yaparız.$username = "myuser"
$password = "mypassword"
$secureString = ConvertTo-SecureString $password -ASPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredentials($username,
$secureString)
$remoteSession = New-PSSession $computer -Credential $credentials
$psDriveName = "Driveabc"
New-PSDrive -Name $psDriveName -PSProvider FileSystem -Root
"\\mycomputer\\MySharedFolder" -Credential $credentials
Copy-Item ....
Remove-PSDrive $psDriveName
Remove PSSession -Session $remoteSession
2. SMB ile kopyalama yapmak
Şöyle yaparızCopy-Item \\servername1\sharename1\filename.ext \\servername2\sharename2
Sonuç DeğeriBu komutu şöyle kullanmak yanlış.
if (Copy-Item .\test.ps1 $env:SystemRoot\System32)
{
Write-Host "Done."
exit 0
}
else
{
Write-Host "Not done."
Write-Host "You must be root."
exit 1
}
Açıklaması şöyle.Copy-Item does not return anything by default, that's why your if statement is always false, because [bool]$null is $false.Şöyle yaparız. Burada $? değişkenini kullanıyoruz.
Copy-Item .\test.ps1 $env:SystemRoot\System32
if ($?) {
Write-Host "Done."
exit 0
}
else {
Write-Host "Not done."
Write-Host "You must be root."
exit 1
}
-Destinaton seçeneği - Hedef Dosya Dizin-Path ile source dosya/dizin belirtilir. -Destination ile target dosya/dizin belirtilir
Örnek
Şöyle yaparız.
$TimeStamp = get-date -f yyyyMMddhhmm
$Destination = "\\netshare\DESTINATION\DATA_" + $TimeStamp
New-Item -ItemType directory -Path $Destination -Force
Copy-Item -Path $Source\*.* -Destination $Destination -Force
-ErrorAction seçeneğiKomutu try/Catch içinde kullanabilmeyi sağlar.
Örnek
Şöyle yaparız.
Try {
Copy-Item .\test.ps1 $env:SystemRoot\System32 -ErrorAction Stop
Write-Host "Done."
exit 0
}
Catch {
Write-Host "Not done."
Write-Host "You must be root."
exit 1
}
-PassThru seçeneği
Komutun başarılı olup olmadığına dair bir sonuç dönmesini sağlar.
Örnek
Şöyle yaparız.
if (Copy-Item .\test.ps1 $env:SystemRoot\System32 -PassThru)
Hiç yorum yok:
Yorum Gönder