راهنمای دانلود و نصب ویندوز ۱۱ با فایل ISO
می 23, 2022راهنمای نصب و راه اندازی Nextcloud بر سرور ویندوز
می 23, 2022PowerShell یک موتور هوشمند و خودکار برای کاربران ویندوز است که به مدیریت بهتر شبکه های کامپیوتری کمک می کند. در واقع مایکروسافت PowerShell را به عنوان ابزاری قدرتمند برای عیب یابی و خودکارسازی فرآیندهای سیستم عامل ویندوز معرفی کرده است. این ابزار از ویندوز دارای دستورات و برنامه هایی است که هر کاربر قبل از شروع باید از آنها آگاه باشد. در این مقاله قصد داریم با یک مثال دستورات PowerShell Copy Item را بررسی کنیم. پس با ما همراه باشید.
آموزش کپی خط فرمان PowerShell
به طور کلی می توانید از دستور Copy-Item برای کپی کردن یک آیتم از مکانی به مکان دیگر استفاده کنید. این دستور فقط آیتم را کپی می کند و سپس آن را قطع یا حذف نمی کند. Copy-Item همچنین می تواند مورد را کپی و تغییر نام دهد و فقط باید نام جدید را در پارامتر Destination در فرمان PowerShell copy-item وارد کنید. طبق MSDN، دستور copy-item به شرح زیر است:
Copy-Item
[-Path] <String[]>
[[-Destination] <String>]
[-Container]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-FromSession <PSSession>]
[-ToSession <PSSession>]
[<CommonParameters>]
این مقاله از Windows PowerShell ISE برای نوشتن، اجرا و اشکال زدایی اسکریپت های PowerShell استفاده می کند. در ادامه با نمونه های بیشتری از کپی های PowerShell همراه باشید.
مثال 1)
در این مثال نحوه کپی کردن فایل از مکانی به مکان دیگر با استفاده از دستور Copy-Item انجام شده و مشاهده می شود که فایل در محل مقصد کپی شده است.
Copy-Item “D:\Source\Test.docx” -Destination “D:\Bijay\Destination”
مثال 2)
در این مثال نحوه کپی کردن تمامی فایل ها از یک مکان به مکان دیگر مورد بررسی قرار می گیرد و در واقع چندین نوع فایل مختلف در پوشه Source با استفاده از cmdlet در PowerShell Copy-Item از پوشه مبدا به پوشه مقصد کپی می شوند.
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination”
آموزش دستور PowerShell Copy Item recurse subfolders
برای کپی کردن زیرپوشه های بازیابی آیتم ها در PowerShell می توان از دستور زیر استفاده کرد. در این حالت در پوشه Source یک زیر پوشه وجود دارد که دارای چندین فایل است و با اجرای دستور زیر فقط پوشه را ایجاد می کند و فایل های ارائه شده در زیر پوشه را کپی نمی کند.
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination”
در حقیقت، اگر پوشه فرعی دارای زیر پوشه تو در تو باشد، هنگام اجرای cmdlet در Copy-Item PowerShell، زیر پوشه تو در تو ایجاد نمیشود.
برای کپی کردن آیتمها به صورت بازگشتی، باید از پارامتر -Recurse با cmdlet Copy-Item PowerShell استفاده کرد.
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination” -Recurse
پس از اجرای دستور بالا، می توان مشاهده کرد که پوشه فرعی شامل پوشه های فرعی تو در تو و پرونده ها را در پوشه مقصد ایجاد می کند.
آموزش دستور PowerShell Copy Item create folder
با استفاده از دستور زیر میتوان آیتمها را از پوشه منبع کپی و در یک پوشه جدید (NewFolder جدید) در مقصد ذخیره کرد. در اینجا میبایست در پارامتر Destination ، باید نام پوشهای مانند زیر را ارائه کرد.
Copy-Item “D:\Source” -Destination “D:\Bijay\Destination\NewFolder” –Recurse
آموزش دستور PowerShell copy item without folder
به منظور کپی آیتمها و فایلها، بدون پوشه میتوان از اسکریپت زیر استفاده نمود. باید اشاره کرد که دستور زیر موارد یا پروندهها را فقط از پوشه اصلی کپی مینماید و فایلها را از پوشههای فرعی کپی نمیکند.
Get-ChildItem D:\Source\ -File | Copy-Item -Destination D:\Bijay\Destination
در صورتی که قصد کپی کردن فایلها به صورت بازگشتی از زیرفولدرها باشد، باید از پارامتر -Recurse مانند زیر استفاده کرد.
Get-ChildItem D:\Source\ -File -Recurse | Copy-Item -Destination D:\Bijay\Destination
آموزش دستور PowerShell copy specific file type
برای کپی کردن فایلهای خاص (به عنوان مثال فایلهایی با فرمت PDF) میتوان از نمونه اسکریپت زیر استفاده کرد.
Copy-Item -Path D:\Source\* -Destination D:\Bijay\Destination -Filter ‘*.pdf’
آموزش دستور PowerShell copy-item exclude files
هنگامی که از دستور PowerShell copy-item cmdlets برای کپی کردن آیتمها استفاده میشود، به وسیله اسکریپت زیر میتوان برخی از فایلها و بخشها را حذف کرد و مانع از انتقال شد.
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination\” -Recurse -Exclude TestPDF.pdf,Test.docx
با استفاده از اسکریپت PowerShell فوق فایل TestPDF.pdf و Test.docx از فهرست حذف و Copy-Item نیز پروندهها را از زیر پوشهها و زیر پوشهای تو در تو حذف میکند. علاوه بر این اسکریپت مربوطه را میتوان مانند موارد زیر وارد کرد.
مثال1)
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination\” -Recurse -Exclude @(“TestPDF.pdf”,”Test.docx”)
مثال 2)
$exclusionFiles = @(“TestPDF.pdf”,”Test.docx”)
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination\” -Recurse -Exclude $exclusionFiles
آموزش دستور PowerShell copy item exclude folder
با استفاده از اسکریپت زیر میتوان در هنگام کپی کردن آیتمها و فولدرها، برخی از فولدرها را در صورت خواست خارج و حذف کرد.
Copy-Item -Path (Get-Item -Path “D:\Source\*” -Exclude (‘Subfolder’)).FullName -Destination “D:\Bijay\Destination\” -Recurse –Force
به این ترتیب هنگام کپی کردن، پوشه فرعی از Source حذف میشود. اما اگر بخواهیم چندین پوشه را حذف کنیم، (مثلاً میخواهیم نام پوشهها را به عنوان Folder1 ،Folder2 حذف کنیم) ،باید از اسکریپت زیر استفاده شود.
Copy-Item -Path (Get-Item -Path “D:\Source\*” -Exclude (‘Folder1’, ‘Folder2’)).FullName -Destination “D:\Bijay\Destination\” -Recurse –Force
آموزش دستور PowerShell copy item exclude (Files and Folders)
در این دستور نیز میتوان در هنگام کپی کردن، فایلها و فولدرها را به همراه هم در میان آنها خارج و حذف کرد.
Copy-Item -Path (Get-Item -Path “D:\Source\*” -Exclude (‘Folder1’, ‘Test.docx’)).FullName -Destination “D:\Bijay\Destination\” -Recurse –Force
آموزش دستور PowerShell copy-item exclude file types
برای حذف کردن یا به قولی مستثنی کردن انواعی از فایلها در کپی کردن میتوان از اسکریپت زیر استفاده نمود. در مثال زیر اسکریپت به شکلی نوشته شده است که امکان کپی کردن فایلهای PDF وجود نداشته باشد.
$exclusionFiles = @(“*.pdf”)
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination\” -Recurse -Exclude $exclusionFiles
در اینجا فایل های pdf از زیر پوشه ها و زیر پوشه های تو در تو هنگام کپی فایل ها حذف می شوند.
همچنین اگر بخواهیم بیش از یک نوع فایل را حذف کنیم، می توان از اسکریپت زیر استفاده کرد. برای مثال در اینجا فایل هایی با پسوند pdf و txt حذف شده اند.
$exclusionFiles = @(“*.pdf”,”*.txt”)
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination\” -Recurse -Exclude $exclusionFiles
آموزش دستور PowerShell copy-item exclude empty folders
در این اسکریپت در هنگام کپی کردن پوشه خالی به مقصد انتقال نمییابد. به این ترتیب این اسکریپت همه پوشهها و فولدرها ارزیابی میکند و مانع از انتقال نمونههای خالی میشود.
$Source = “D:\Source\”
$items = Get-ChildItem $Source -Force
$Destination=”D:\Bijay\Destination\”
ForEach ($item in $items)
{
if((Get-ChildItem -Path $($item.FullName)).Count -gt 0)
{
Copy-Item -Path $item.FullName -Destination $Destination -Force -Recurse
}
}
آموزش دستور PowerShell copy-item exclude hidden files
در بسیاری از موارد که نمی خواهیم فایل های مخفی یا به اصطلاح مخفی را کپی کنیم، می توان از اسکریپت زیر استفاده کرد. به این ترتیب پوشه های مخفی کپی نمی شوند.
ForEach ($FileItem in (gci -Path ‘D:\Source’ -Recurse))
{ Copy-Item $FileItem.FullName -Destination ‘D:\Bijay\Destination’ }
آموزش دستور PowerShell copy item exclude existing files
این دستور فرآیند کپی را بررسی می کند و اگر فایل یا پوشه ای در مقصد باشد، آن فایل یا پوشه را کپی نمی کند و فقط در صورتی که در مقصد نباشد. برای اجرای این دستور می توان از اسکریپت زیر استفاده کرد.
$sourceFile = ‘D:\Source\Test.docx’
$destinationFile = ‘D:\Bijay\Destination\Test.docx’
if (-not (test-path $destinationFile))
{
Copy-Item $sourceFile -Destination $destinationFile
}
اسکریپت PowerShell هر فایل را در پوشه زیر بررسی میکند و در صورت وجود آن در پوشه مقصد، آن را کپی نمیکند. در غیر این صورت فایل در پوشه مقصد کپی می شود. فایل ها نیز برای پوشه ها و زیر پوشه ها بررسی می شوند.
$Source = “D:\Source\”
$items = Get-ChildItem $Source -Force
$Destination=”D:\Bijay\Destination\”
ForEach ($item in $items)
{
$destinationFile = $Destination+$item.FullName
if (-not (test-path $destinationFile))
{
Copy-Item -Path $item.FullName -Destination $Destination -Force -Recurse
}
}
آموزش دستور PowerShell copy item overwrite
به طور پیش فرض، وقتی با استفاده از دستور زیر آیتمی کپی شود، آن مورد در مقصد انتقال مییابد.
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination” -Recurse
این اسکریپت برای فایلها کاملا درست به کار میرود، اما برای فولدرها خطا ایجاد میکند.
میتوان با افزودن پارامتر Confirm: $ true مانند زیر یک پیام تأیید اضافه کرد و به این ترتیب وقتی اسکریپت PowerShell زیر اجرا میگردد، سیستم درخواست تایید میکند.
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination” -Recurse -Confirm:$true -Force
آموزش دستور PowerShell copy-item overwrite directory
اسکریپت زیر را می توان برای رفع خطای بالا در فرمان PowerShell copy-item overwrite directory استفاده کرد.
Copy-Item “D:\Source\*” -Destination “D:\Bijay\Destination” -Recurse -Force
آموزش دستور PowerShell copy-item progress
اگر از دستور PowerShell copy-item استفاده شده باشد و بخواهیم نوار پیشرفت یا نوار پیشرفت ایجاد کنیم، از اسکریپت زیر استفاده می شود.
Function Copy-WithProgress
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$Source,
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$Destination
)
$Source=$Source.tolower()
$Filelist=Get-Childitem “$Source” –Recurse
$Total=$Filelist.count
$Position=0
foreach ($File in $Filelist)
{
$Filename=$File.Fullname.tolower().replace($Source,”)
$DestinationFile=($Destination+$Filename)
Write-Progress -Activity “Copying data from ‘$source’ to ‘$Destination'” -Status “Copying File $Filename” -PercentComplete (($Position/$total)*100)
Copy-Item $File.FullName -Destination $DestinationFile
$Position++
}
}
$src=”D:\Data\Songs”
$dest=”D:\Bijay\Destination”
Copy-WithProgress -Source $src -Destination $dest
به این ترتیب progress bar یا نوار پیشرفت به شکل زیر به وجود میآید.
آموزش دستور PowerShell copy item from network share
با استفاده از اسکریپت زیر ، اجازه کپی آیتم از شبکه داده میشود.
$Session = New-PSSession -ComputerName “Server01” -Credential “Domain\username”
Copy-Item “D:\SourceFolder\” -Destination “C:\DestinationFolder\” -ToSession $Session
همچین اگر بخواهیم به صورت بازگشتی کپی کنیم باید پارامتر -Recurse اضافه گردد.
$Session = New-PSSession -ComputerName “Server01” -Credential “Domain\username”
Copy-Item “D:\SourceFolder\” -Destination “C:\DestinationFolder\” -ToSession $Session -Recurse
آموزش دستور PowerShell copy item Merge multiple folders
حال با کاربرد اسکریپت زیر میتوان چندین پوشه را هنگام استفاده از cmdletهای PowerShell Copy-Item ادغام کرد.
Copy-Item -Path D:\Source\*,D:\Source1\*,D:\Source2\* -Destination D:\Bijay\Destination\
اسکریپت PowerShell فوق همه پروندهها را از پوشه های Source ، Source1 و Source2 در پوشه Destination کپی می کند.
آموزش دستور PowerShell copy item and rename the file
هنگام کپی کردن یک فایل با استفاده از Copy-Item، می توانید نام آن را نیز تغییر دهید، و این کار با اسکریپت PowerShell زیر انجام می شود.
Copy-Item -Path D:\Source\Test.docx -Destination D:\Bijay\Destination\NewTest.docx
در اینجا فایل Test.docx در پوشه Destination با نام جدید کپی میشود و نام فایل NewTest.docx خواهد بود.

