aynı adı taşıyan .ps1 dosyamla alt klasörüme basit bir .cmd dosyası koy, bu nedenle, örneğin, "foobar" adlı bir komut dosyasında "foobar.ps1" ve "foobar.cmd" olur. Bu nedenle .ps1'i çalıştırmak için tek yapmam gereken .cmd dosyasını explorer'dan tıklamak veya .cmd'yi komut isteminden çalıştırmak. Aynı temel adı kullanıyorum çünkü .cmd dosyası otomatik olarak kendi adını kullanarak .ps1'i arayacaktır.
::====================================================================
:: Powershell script launcher
::=====================================================================
:MAIN
@echo off
for /f "tokens=*" %%p in ("%~p0") do set SCRIPT_PATH=%%p
pushd "%SCRIPT_PATH%"
powershell.exe -sta -c "& {.\%~n0.ps1 %*}"
popd
set SCRIPT_PATH=
pause
Pushd / popd, komut dosyalarının bulunduğu belirli dizine geçmek zorunda kalmadan .cmd dosyasını komut isteminden başlatmanıza olanak tanır. Komut dosyası dizinine değişecektir, daha sonra tamamlandığında orijinal dizine geri dönün.
Komut dosyası tamamlandığında komut penceresinin kaybolmasını istiyorsanız da duraklamayı kaldırabilirsiniz.
.Ps1 komut dosyamda parametreler varsa, .NET Forms kullanarak GUI istemleri olan istemleri isterim, ancak komut dosyalarını yerine geçmek istersem parametreleri kabul edecek kadar esnek hale getiririm. Bu şekilde Explorer'dan çift tıklayabilirim ve parametrelerin ayrıntılarını bilmek zorunda değilim, çünkü liste kutuları veya diğer formlarla bana ihtiyacım olan şeyi soracak.