1399-12-27 00:37 PowerShell - PowerShell ISE
رضا اکبری استرآبادی

 
یا ابا صالح ادرکنی
با کسب اجازه از برادر و استاد عزیزم جناب آقای حاجی شریفی

قصد دارم در رابطه با PowerShell - PowerShell ISE با شما صحبت کنم و هر آنچه بلدم را باشما دوستان به اشتراک بزارم

یکی از ایراداتی که همیشه به مایکروسافت ویندوز وارد بود این بود که خط فرمان ضعیف تری نسبت به سیستم عامل های دیگر مانند لینوکس و خانواده یونیکس دارد و مدیران شبکه برای اجرای دستورات خود از طریق Command Prompt که خط فرمان ویندوز است با موانع زیادی از جمله محدودیت در اجرای فرامین روبرو بودند. از این رو مایکروسافت با ارائه Microsoft Windows PowerShell این نیاز اساسی و مهم را که در ویندوز احساس میشد به خوبی رفع و رجوع کرد. از جمله این امکانات میتوان به اسکریپت نویسی در محیط Powershell اشاره کرد.Windows Powershell به طور پیشفرض بر روی ویندوزهای vista و ۷ و Server 2008 موجود است اما نسخه هایی نیز برای سایر نسخ ویندوز ارائه شده که میتوانید از سایت مایکروسافت دریافت نمایید.

1399-12-27 01:13 مرجع اصلی یادگیری PowerShell
رضا اکبری استرآبادی

 
1399-12-28 13:39 PowerShell پاورشل چیست ؟
رضا اکبری استرآبادی

 
PowerShell پاورشل چیست ؟
PowerShell از دو قسمت یک خط فرمان و یک زبان برنامه نویسی تشکیل شده است ،

پوسته خط فرمان فاقد رابط گرافیکی است ، و دستورات به صورت خط فرمان همانند command prompt و شبیه آنچه در دوران قدیم داشتیم( DOS ) تقریبا هر کاری را که در ویندوز به صورت گرافیکی انجام می دهیم درانجا به صورت خط فرمان می توان انجام داد .!!!

PowerShell همانند Command Prompt است ولی از CMD قدرتمندتر و پیچیده تر است و توانایی کنترل PowerShell روی ویندوز بسیار بیشتر است. مایکروسافت ابزار پاورشل را جهت مدیریت و پیکربندی سیستم عامل ویندوز توسعه داد. این ابزار بر پایه Net Framework پیاده سازی شده و شامل یک رابط کاربری خط فرمان و یک زبان اسکریپت است. این ابزار درواقع یک کمک کننده به حل سریعتر مشکلات ویندوز و خودکار نمودن تنظیمات سیستم عامل است.
در اینجا برخی از مزایای استفاده از کنسول ذکر شده است:

1-تعامل با کنسول اغلب سریعتر از استفاده از رابط گرافیکی است.
2-در یک کنسول می توانید دسته ای از دستورات را اجرا کنید ، بنابراین برای کارهای دسته ای و مداوم انجام داده میشود ایده آل است.
3-برای تعامل با منابع ابری و سایر منابع می توانید از یک کنسول استفاده کنید.
4-می توانید دستورات و اسکریپت ها را در یک فایل متنی ذخیره کنید و از یک سیستم کنترل منبع استفاده کنید. این مزیت احتمالا یکی از بزرگترین مزایا است زیرا دستورات شما قابل تکرار و قابل کنترل هستند.

لینک اشتراک گذاری این پست : پاورسل چیست ؟
1400-01-07 10:03 دستورات ابتدایی در powershell
رضا اکبری استرآبادی

 
در زیر به نمونه های از دستورات و کار بردهای آن می پردازیم :


باعث پاک کردن صفحه و نوشته های قبلی و خروجی های قبلی می شود
Clear-Host
باعث چاپ Hello Word در خروجی میشه
"Write-Host "Hello World
یا
"Echo "Hello Word
از دستورات قدیمی cmd وdos هست و شمارا به مسیر تایین شده می برد
cd D:\MY\ffmpeg
دستورات زیر نام و تاریخ تغییرات و مود کلیه فایلها و فولدر های مسیر جاری که در آن قراردارد را در خروجی چاپ می کند
Get-ChildItem
یا
ls
یا
dir
فقط نام ها را لیست می کند
Get-ChildItem | Select-Object Name
gci | Select Name



قراردادتوضیحات در یک خط قبل از توضیحات # می گذاریم و اگر بخواهیم توضیحات چند خطی بگذاریم توضیحات را بین <# #> قرار می دهیم

# This is a comment in PowerShell
یا

<#
This is a
multi-line
comment
#>
لینک اشتراک گذاری این پست : دستورات ابتدایی در پاورشل
1400-01-07 10:14 دستورات ابتدایی در powershell
رضا اکبری استرآبادی

 
کپی کردن کلیه فایها و فلدرهای مسیر جاری در مسیر C:\NewDirectory


get-ChildItem | ForEach-Object {
Copy-Item -Path $_.FullName -destination C:\NewDirectory\
}

تایپ های مختلف در powershell :


description

DataTypes

Fixed-length string of Unicode characters

[string]

A Unicode 16-bit character

[char]

An 8-bit unsigned character

[byte]

32-bit signed integer

[int]

64-bit signed integer

[long]

Boolean True/False value

[bool]

A 128-bit decimal value

[decimal]

Single-precision 32-bit floating point number

[single]

Double-precision 64-bit floating point number

[double]

Date and Time

[DateTime]

Xml object

[xml]

An array of values

[array]

Hashtable object

[hashtable]


لینک اشتراک گذاری این پست : powershell datatype
1400-03-03 13:40 Globalization - Persian Calendar - PersianCalendar - PowerShell - تقویم فارسی - تبدیل تاریخ شمسی - کپی - copy - open file
رضا اکبری استرآبادی

 
سلام .
بعضی و قت ها آدم مجبور به کارهایی میشه که هیچ وقت فکرش راهم نمیکرد . خوب من جدیدا مجبور شدم روی یه سیستم نامناسب و بدون داشتن نرم افزارهای مناسب برنامه نویسی برنامکی بنویسم . خوب دست بکار شدم با سواد کمی که دارم شروع کردم با Powreshell بنویسم !!! ... ولی خوب تجربه همین طوری کسب میشه دیگه . مگه غیر اینه هان ؟
گفتم بهتر این تجربه و چیزهایی که احتیاج داشتم در پاورشل را با شما به اشتراک بزارم تا شاید به کارتون بخوره .


توجه :
اول با استادم تماس گرفتم و راهنمایی خیلی خوبی کرد و گفت : اولا PowerShell را با Net. و در #C نوشته شده و لذا هر کاری که تو #C می تونی بکنی تو اینجا هم می تونی انجام بدی


#open folder - باز کردن فلدر و مسیری خاص
explorer.exe E:\_Akbari_\Edit-Memory
start E:\_Akbari_\Edit-Memory





#check path - چک کردن وجودیت یک مسیر و نتیجه ای که برمی گرداند بولین هست .
Test-Path C:\fsox
Test-Path E:\_Akbari_\Edit-Memory





# get date and create PersianCalendar - تقویم فارسی - تقویم شمسی - تبدیل تاریخ
$ET=Get-Date
$culture= New-object System.Globalization.PersianCalendar
$PersianCalendar=$culture.GetYear($Et).ToString() + "-" +$culture.GetMonth($ET).ToString() +"-" + $culture.GetDayOfMonth($ET).ToString()
$PersianCalendar




لینک اشتراک گذاری این پست : persianCalender - globalization powershell -تقویم شمسی در پاورشل
1400-03-03 13:57 ایجاد فرم - label - Drawing form - control-textbox- button - show form - PowerShell - System.Windows.Forms
رضا اکبری استرآبادی

 
حالا هم قسمت جذاب ایجاد فرم در پاورشل

Show Form In PowerShell



# Load required assemblies
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")


# Drawing form and controls
$Form_C2N = New-Object System.Windows.Forms.Form
$Form_C2N.Text = "Convert To NewsRoom"
$Form_C2N.Size = New-Object System.Drawing.Size(450,290)
$Form_C2N.FormBorderStyle = "FixedDialog"
$Form_C2N.TopMost = $true
$Form_C2N.MaximizeBox = $false
$Form_C2N.MinimizeBox = $false
$Form_C2N.ControlBox = $true
$Form_C2N.StartPosition = "CenterScreen"
$Form_C2N.Font = "Segoe UI"
# $Form_C2N.ForeColor= "RED"


# adding a label to my form - labelN
$labelN_C2N = New-Object System.Windows.Forms.Label
$labelN_C2N.Location = New-Object System.Drawing.Size(4,4)
$labelN_C2N.Size = New-Object System.Drawing.Size(150,32)
$labelN_C2N.TextAlign = "MiddleCenter"
$labelN_C2N.Text = "لطفا شماره نوار را وارد کنید"
$Form_C2N.Controls.Add($labelN_C2N)

# adding a textbox to my form
$txtN_C2N = New-Object System.Windows.Forms.TextBox
$txtN_C2N.Location = New-Object System.Drawing.Size(154,4)
$txtN_C2N.Size = New-Object System.Drawing.Size(150,32)
# $txtN_C2N.TextAlign = "MiddleCenter"
$txtN_C2N.Text = ""
$Form_C2N.Controls.Add($txtN_C2N)



# adding a label to my form - labelD
$labelD_C2N = New-Object System.Windows.Forms.Label
$labelD_C2N.Location = New-Object System.Drawing.Size(4,38)
$labelD_C2N.Size = New-Object System.Drawing.Size(150,32)
$labelD_C2N.TextAlign = "MiddleCenter"
$labelD_C2N.Text = "لطفا درایو را وارد کنید ----> مثلا (D , G , E ,F)"
$Form_C2N.Controls.Add($labelD_C2N)

# adding a textbox to my form - txtD
$txtD_C2N = New-Object System.Windows.Forms.TextBox
$txtD_C2N.Location = New-Object System.Drawing.Size(154,38)
$txtD_C2N.Size = New-Object System.Drawing.Size(150,32)
# $txtD_C2N.TextAlign = "MiddleCenter"
$txtD_C2N.Text = ""
$Form_C2N.Controls.Add($txtD_C2N)


# add a button
$button_ClickMe = New-Object System.Windows.Forms.Button
$button_ClickMe.Location = New-Object System.Drawing.Size(8,80)
$button_ClickMe.Size = New-Object System.Drawing.Size(240,32)
$button_ClickMe.TextAlign = "MiddleCenter"
$button_ClickMe.Text = "Click Me!"
$button_ClickMe.Add_Click({
$button_ClickMe.Text = "You did click me!"
Start-Process calc.exe
})
$Form_C2N.Controls.Add($button_ClickMe)

# show form
$Form_C2N.Add_Shown({$Form_C2N.Activate()})
[void] $Form_C2N.ShowDialog()






اجرا کردن و باز کرن یک برنامه در پاورشل
مثلا بازکردن ماشین حساب

Start-Process calc.exe



لینک اشتراک گذاری این پست : ایجاد فرم در پاورشل - show windows form powershell
1400-03-03 16:36 Bach file - Convert PowerShell To Batch
رضا اکبری استرآبادی

 
دیدی چی شد داشت یادم میرفت آخر کار می بایست یه Bach file می دادم .
البته کد زیر تقلب از اینترنت هست . البته الان یادم نیست منبع آن کدام سایت خارجی هست و گرنه ذکر می کردم ....




function Convert-PowerShellToBatch
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[string]
[Alias("FullName")]
$Path
)

process
{
$encoded = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes((Get-Content -Path $Path -Raw -Encoding UTF8)))
$newPath = [Io.Path]::ChangeExtension($Path, ".bat")
"@echo off`npowershell.exe -NoExit -encodedCommand $encoded" | Set-Content -Path $newPath -Encoding Ascii
}
}

# در اینجا گفته تمام فایل های واقع در مسیر مشخص شده را به بچ فایل تبدیل کن

Get-ChildItem -Path D:\temp\t\ -Filter *.ps1 | Convert-PowerShellToBatch



و نکته آخر اینکه متونید batch file ساخته شده را در کنار فایل (PS1 ) پاورشل در یه فلدر بگذارید و دستور زیر را در batch file قراردهید تا batch file فایل پاروشل شمارو اجرا کنه (خوب این همه مطالب قبلی که گفتی پس چی ) ... :

powershell -windowstyle hidden -executionpolicy bypass "%~dp0\NameFilePowerShell.ps1" -exit


لینک اشتراک گذاری این پست : Bach file - convert ps1
1400-03-14 20:43 اجرای فرامین Powershell از کنسول Command Prompt
حاجی شریفی
مؤسس سایت
 
سلام
در خصوص اجرای فرامین Powershell و ps1 از خط فرمان قدیمی Command Prompt یا فایل هایی با پسوند cmd و bat ، کار ساده دیگری که میتوان انجام داد ، آن است که در کنار اسکریپت های ps1 یک فایل cmd یا bat هم نام ایجاد کرد که اسکریپت پاورشل را اجرا کند

مثلا اگر فایل publish.ps1 در مسیر داریم ، فایل publish.bat می تواند چنین باشد
powershell -noexit -executionpolicy bypass "%~dp0\publish.ps1"


با این کار هم از کنسول قدیمی Command Prompt و هم از ترمینال جدید Powershell که وارد دایرکتوری بشوید، فرمان مناسب با تایپ یک کلمه ای آماده اجرا است

لینک اشتراک گذاری این پست : اجرای فایل ps1
1400-05-19 08:00 روش یادگیری پاورشل
Mohammad05

 
سلام و قتتون بخیر.
مرسی از اینکه اطلاعاتی دارین در اختیار دیگران میزارین.
ببخشید یه سوال داشتم نمی دونستم کجا سوالم بیان کنم.
سوالم اینکه من می خوام پاورشل رو از بیس کار شروع کنم بعدش بتونم کارام باهاش انجام بدم و حتی بتونم یه فرمی بسازم اطلاعات زیادی جمع آوری کردم همه هم خیلی کوتاه و تکراری بودن یه چیزای در حد یه درصد خیلی کم یاد گرفتم اما میخواستم از شما بپرسم که به چه صورت باید پاورشل رو یاد گرفت یعنی از صفر تا صد ؟؟ ( تو سایت ها فقط در سطح مقدماتی هست باید به همین اکتفا کرد و بعد خودمون بقیه ی راه رو بریم یا نه ؟؟)
خیلی نیاز دارم بهش .
ممنون میشم راهنماییم کنید.
سپاسگزارم از شما
1400-05-20 23:29 آموزش صفر تا صد پاورشل
رضا اکبری استرآبادی

 
باعرض سلام خدمت شما
اولین نکته که بنظرم میرسه و باید بدونید اینکه پاورشل برای طراحی به شکل ویندوز فرم نیست یعنی برای اینکار مناسب نیست . وظیفه دیگری براش درنظر گرفته شده . البته نه اینکه نشه براش ویندوز فرم طراحی کرد ولی مناسب نیست
بنظرم اگر میخواهید فرمی رادرست کنید و یا اطلاعاتی از کاربر بگیرید بهتر برید سر گزینه های دیگر مثل #C .
ولی در رابطه با فرا گیری پاورشل همیشه یکی از گزینه های خوب سایت یا شرکت تولید کننده هست . می تونید استفاده کنید .البته در پست دوم معرفی کردم .
اما معمولا یادگیری date type ها اولین قدم هست . اگر اشتباه نکنم یه pdf در این زمینه دارم در اسرع وقت پیدا می کنم و لینک دانلودش را براتون قرار میدم .

کتاب اول : Professional_Windows_PowerShell

کتاب دوم :
PowerShell - microsoft -part1
PowerShell - microsoft -part2

آخ داشت یادم میرفت به علت عدم رعایت حق کپی رایت یکبار اکانتم را بستن . برای همین نام را عوض کردم و بعد zip or rar کردم . با پسورد 110

لینک اشتراک گذاری این پست : آموزش صفر تا صد پاورشل - کتاب
1401-03-09 08:30 Command Prompt shutdown - خاموش شدن کامپیوتر بعد از تایمی بصورت اتوماتیک - PC - Start-Sleep -Seconds -Stop-Computer -Force
رضا اکبری استرآبادی

 
سلام به همه خوانندگان این مطلب

راستش برای من زیاد پیش میاد که مثلا داره برنامه ای روی سیستمم آپدیت میشه خوب 1 - 2 ساعت ممکنه طول بکشه و من می خواهم بعد از
انجام کارش سیستم به صورت اتوماتیک خاموش بشه و یا مثلا دارم فایلی رو دانلود می کنم و قرار بعد از مثلا 5 ساعت که فایل دانلود شد سیستم
خاموش بشه ...
خوب شاید شما عزیزان راه های زیادی رو بشناسید برای این کار مثل نصب برنامه ای و یا .... نمی دونم ولی
نقل قول
راه های رسیدن به خدا به تعداد آدمهای روی زمینه (رضا مارمولک)

من عاشق این یک خط جمله هستم ... انگار برای برنامه نویس ها گفته ....
نقل قول
راه های حل یک مسئله به تعداد خط های کدهای پروژه هست !!! .... (از خودم)

راهی که من باهاش راحتم هست این دوخط کد می باشد :



# Force all applications to close and shutdown Windows immediately
# بعد از N ساعت سیستم را خاموش می کند


Start-Sleep -Seconds 1000
Stop-Computer -Force


در دستور بالا بعد از 16- 17 دقیقه سیستم شما خاموش میشه ... فقط کافیه یه تایم تقریبی از کارتون داشته باشید ...
1401-03-10 13:37 چه نسخه ای از دات نت یا دات نت کر رو سیستم شما نصب هست -NETCore - NET Corecheck version of .net framework installed - .NET Core version - .NETCore - dotNet Core - dotNetCore
رضا اکبری استرآبادی

 
سلام سلام سلام ....

میخواهی بدونی چه ورژن از
.Net Framework
روی سیستمت نصب شده .. باشه با هر کدوم از دستورات زیر به راحتی می تونی ببینی :

هر روزی که می گذره و به اطلاعاتم افزوده میشه من پاورشل را قوی تر می بینم ...

دو کد آخری تقریبا مثل هم هست ... دقت کن نکته رو گرفتی .... Select ...


#//_____________________________________________________________________________________
# get All Version .Net Framework
reg query "HKLM\SOFTWARE\Microsoft\Net Framework Setup\NDP" /s
#//_____________________________________________________________________________________
# get All Version .Net Framework
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?!S)\p{L}'} |
Select PSChildName, Version, Release
#//_____________________________________________________________________________________
# get All Version .Net Framework
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?!S)\p{L}'} |
Select Version
#//_____________________________________________________________________________________



1402/03/22
در ادامه مطلب فوق برای بدست آوردن لیست NETCore. که روسیستم نصب شده اند می توانید از دستور زیر استفاده کنید



نقل قول
This is one way to determine what version of .NET Core is installed on your machine

//Runtime
(dir (Get-Command dotnet).Path.Replace('dotnet.exe', 'shared\Microsoft.NETCore.App')).Name

//SDK

(dir (Get-Command dotnet).Path.Replace('dotnet.exe', 'sdk')).Name



و دستورات ساده تر که راحت بیاد بمونه :

dotnet --version

dotnet --list-runtimes
1401-03-21 18:07 Execution Policy - windows - Error - Machine Policy
رضا اکبری استرآبادی

 
سلام .
بعضی وقت ها پیش میاد وقتی داریم با دستورات comment کار می کنیم به یکسری Error مثل این بر می خوریم : مثلا برای دید ورژن برنامه ها نصب و ...





که مربوط به یکسری Policy های ویندوز میشه و برای توضیح دقیقترش می تونید اینجا را مطالعه کنید

و برای رفع آن کافیه از دستورا ت زیر استفاده کنید :


set-ExecutionPolicy Unrestricted
set-ExecutionPolicy AllSigned


Get-ExecutionPolicy -List

Get-ExecutionPolicy -Scope CurrentUser


Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

#Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope MachinePolicy





یک نوع Error دیگه هم هست که به شما Access is denied و با Run as Adminstrator مشکل برطرف میشود .
مثلا : به این دو عکس نگاه کنید . وقتی برنامه را با Run as Adminstrator اجرا می کنیم دیگر خطا نمی دهد .




1401-05-07 11:13 TimeSpan - cast timestamp - datetime - powershell
رضا اکبری استرآبادی

 
سلام
ساختن یه timestamp (Or datetime) و cast آن :


$dateTime1=(get-date -Format "HH:mm:ss")
$dateTime2=(New-TimeSpan -Hours 0 -Minutes 1 -Seconds 30)
$diff = [TimeSpan]$dateTime1-[TimeSpan]$dateTime2
write-host $diff

$resolvedDate = "1/3/2019 11:3:10"
$referredDate = "1/2/2019 11:10"
$diff = [datetime]$resolvedDate - [datetime]$referredDate
write-host $diff


1401-11-07 21:41
Jemsnixon

 
Another easy solution is to create a cmd or bat file with the same name as the script next to the ps1 scripts in order to execute Powershell and ps1 commands from the old Command Prompt command line or files with the extensions cmd and bat .