Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Betik modülü, .psm1 uzantısına kaydedilmiş geçerli bir PowerShell betiğidir. Bu uzantı, PowerShell altyapısının dosyanızdaki kuralları ve modül cmdlet'lerini kullanmasına olanak tanır. Bu özelliklerin çoğu kodunuzu diğer sistemlere yüklemenize ve kapsam belirlemeyi yönetmenize yardımcı olur. Daha karmaşık yüklemeleri ve çözümleri açıklayan bir modül bildirim dosyası da kullanabilirsiniz.
PowerShell betik modülü yazma
Betik modülü oluşturmak için geçerli bir PowerShell betiğini .psm1 bir dosyaya kaydedin. Betik ve depolandığı dizin aynı adı kullanmalıdır. Örneğin, MyPsScript.psm1 adlı bir betik MyPsScriptadlı dizinde depolanır.
Modülün dizininin $Env:PSModulePathiçinde belirtilen bir yolda olması gerekir. Modülün dizini, betiği çalıştırmak için gereken tüm kaynakları ve modülünüzün nasıl çalıştığını PowerShell'e açıklayan bir modül bildirim dosyası içerebilir.
Temel bir PowerShell modülü oluşturma
Aşağıdaki adımlarda Bir PowerShell modülünün nasıl oluşturulacağı açıklanmaktadır.
PowerShell betiğini
.psm1uzantısıyla kaydedin. Betik ve betiğin kaydedildiği dizin için aynı adı kullanın.Betiği
.psm1uzantısıyla kaydetmek, Import-Modulegibi modül cmdlet'lerini kullanabileceğiniz anlamına gelir. Modül cmdlet'leri, kodunuzu diğer kullanıcıların sistemlerine içeri ve dışarı aktarabilmeniz için öncelikli olarak mevcuttur. Alternatif çözüm, kodunuzu diğer sistemlere yüklemek ve ardından bunu etkin belleğe noktalı kaynakla aktarmaktır; bu ölçeklenebilir bir çözüm değildir. Daha fazla bilgi için bkz. windows powershell modülünü anlama . Varsayılan olarak, kullanıcılar.psm1dosyanızı içeri aktardığında betiğinizdeki tüm işlevler erişilebilir ancak değişkenler kullanılamaz.bu makalenin sonunda
Show-Calendaradlı örnek bir PowerShell betiği sağlanır.function Show-Calendar { param( [datetime] $Start = [datetime]::Today, [datetime] $End = $Start, $FirstDayOfWeek, [int[]] $HighlightDay, [string[]] $HighlightDate = [datetime]::Today.ToString('yyyy-MM-dd') ) #actual code for the function goes here see the end of the topic for the complete code sample }Belirli işlevlere veya değişkenlere kullanıcı erişimini denetlemek için betiğinizin sonunda Export-ModuleMember çağrısı yapın.
Makalenin altındaki örnek kodun varsayılan olarak kullanıma sunulacak tek bir işlevi vardır. Ancak, aşağıdaki kodda açıklandığı gibi hangi işlevleri kullanıma açmak istediğinizi açıkça belirtmeniz önerilir:
function Show-Calendar { } Export-ModuleMember -Function Show-CalendarModül bildirimini kullanarak içeri aktarılanları kısıtlayabilirsiniz. Daha fazla bilgi için bkz. PowerShell Modülü İçeri Aktarma ve PowerShell Modülü Bildirimi Yazma.
Kendi modülünüzün yüklemesi gereken modülleriniz varsa, modülünüzün üst kısmındaki
Import-Modulekullanabilirsiniz.Import-Modulecmdlet'i hedeflenen modülü bir sisteme aktarır ve yordamın sonraki bir noktasında kendi modülünüzü yüklemek için kullanılabilir. Bu makalenin altındaki örnek kod, herhangi bir içeri aktarma modülü kullanmaz. Ancak varsa, aşağıdaki kodda gösterildiği gibi dosyanın en üstünde listelenirler:Import-Module GenericModuleModülünüzü PowerShell Yardım sistemine açıklamak için dosyanın içinde standart yardım açıklamalarını kullanabilir veya ek bir Yardım dosyası oluşturabilirsiniz.
Bu makalenin altındaki kod örneği, açıklamalardaki yardım bilgilerini içerir. Ek yardım içeriği içeren genişletilmiş XML dosyaları da yazabilirsiniz. Daha fazla bilgi için bkz. Windows PowerShell Modülleri için Yazma Yardımı.
Modülünüzle birlikte paketlemek istediğiniz ek modülleriniz, XML dosyalarınız veya başka içeriğiniz varsa modül bildirimini kullanabilirsiniz.
Modül bildirimi, diğer modüllerin, dizin düzenlerinin, sürüm oluşturma numaralarının, yazar verilerinin ve diğer bilgi parçalarının adlarını içeren bir dosyadır. PowerShell, çözümünüzü düzenlemek ve dağıtmak için modül bildirim dosyasını kullanır. Daha fazla bilgi için bkz. PowerShell modülü bildirimiyazma.
Modülünüzü yüklemek ve çalıştırmak için modülü uygun PowerShell yollarından birine kaydedin ve
Import-Modulekullanın.Modülünüzü yükleyebileceğiniz yollar
$Env:PSModulePathgenel değişkeninde bulunur. Örneğin, bir sisteme modül kaydetmeye yönelik yaygın bir yol%SystemRoot%/users/<user>/Documents/PowerShell/Modules/<moduleName>olacaktır. Yalnızca tek bir.psm1dosyası olsa bile, modülünüz için betik modülüyle aynı adı kullanan bir dizin oluşturduğunuzdan emin olun. Modülünüzü bu yollardan birine kaydetmediysenizImport-Modulekomutunda modülün konumunu belirtmeniz gerekir. Aksi takdirde PowerShell modülü bulamaz.Uyarı
PowerShell 3.0'dan başlayarak, modülünüzü PowerShell modül yollarından birine yerleştirdiyseniz açıkça içeri aktarmanız gerekmez. Kullanıcı işlevinizi çağırdığında modülünüz otomatik olarak yüklenir. Modül yolu hakkında daha fazla bilgi için bkz. PowerShell Modülünü İçeri Aktarma ve about_PSModulePath.
Geçerli PowerShell oturumunda etkin hizmetten bir modülü kaldırmak için Remove-Modulekullanın.
Uyarı
Remove-Modulemodülü geçerli PowerShell oturumundan kaldırır, ancak modülü kaldırmaz veya modülün dosyalarını silmez.
Show-Calendar kod örneği
Aşağıdaki örnek, Show-Calendaradlı tek bir işlev içeren bir betik modülüdür. Bu işlev bir takvimin görsel gösterimini görüntüler. Örnek, özet, açıklama, parametre değerleri ve kod için PowerShell Yardım dizelerini içerir. Modül içeri aktarıldığında, Export-ModuleMember komutu Show-Calendar işlevinin modül üyesi olarak dışarı aktarılmasını sağlar.
<#
.SYNOPSIS
Displays a visual representation of a calendar.
.DESCRIPTION
Displays a visual representation of a calendar. This function supports multiple months
and lets you highlight specific date ranges or days.
.PARAMETER Start
The first month to display.
.PARAMETER End
The last month to display.
.PARAMETER FirstDayOfWeek
The day of the month on which the week begins.
.PARAMETER HighlightDay
Specific days (numbered) to highlight. Used for date ranges like (25..31).
Date ranges are specified by the Windows PowerShell range syntax. These dates are
enclosed in square brackets.
.PARAMETER HighlightDate
Specific days (named) to highlight. These dates are surrounded by asterisks.
.EXAMPLE
# Show a default display of this month.
Show-Calendar
.EXAMPLE
# Display a date range.
Show-Calendar -Start "March, 2010" -End "May, 2010"
.EXAMPLE
# Highlight a range of days.
Show-Calendar -HighlightDay (1..10 + 22) -HighlightDate "2008-12-25"
#>
function Show-Calendar {
param(
[datetime] $Start = [datetime]::Today,
[datetime] $End = $Start,
$FirstDayOfWeek,
[int[]] $HighlightDay,
[string[]] $HighlightDate = [datetime]::Today.ToString('yyyy-MM-dd')
)
## Determine the first day of the start and end months.
$Start = New-Object DateTime $Start.Year,$Start.Month,1
$End = New-Object DateTime $End.Year,$End.Month,1
## Convert the highlighted dates into real dates.
[datetime[]] $HighlightDate = [datetime[]] $HighlightDate
## Retrieve the DateTimeFormat information so that the
## calendar can be manipulated.
$dateTimeFormat = (Get-Culture).DateTimeFormat
if($FirstDayOfWeek)
{
$dateTimeFormat.FirstDayOfWeek = $FirstDayOfWeek
}
$currentDay = $Start
## Process the requested months.
while($Start -le $End)
{
## Return to an earlier point in the function if the first day of the month
## is in the middle of the week.
while($currentDay.DayOfWeek -ne $dateTimeFormat.FirstDayOfWeek)
{
$currentDay = $currentDay.AddDays(-1)
}
## Prepare to store information about this date range.
$currentWeek = New-Object PsObject
$dayNames = @()
$weeks = @()
## Continue processing dates until the function reaches the end of the month.
## The function continues until the week is completed with
## days from the next month.
while(($currentDay -lt $Start.AddMonths(1)) -or
($currentDay.DayOfWeek -ne $dateTimeFormat.FirstDayOfWeek))
{
## Determine the day names to use to label the columns.
$dayName = "{0:ddd}" -f $currentDay
if($dayNames -notcontains $dayName)
{
$dayNames += $dayName
}
## Pad the day number for display, highlighting if necessary.
$displayDay = " {0,2} " -f $currentDay.Day
## Determine whether to highlight a specific date.
if($HighlightDate)
{
$compareDate = New-Object DateTime $currentDay.Year,
$currentDay.Month,$currentDay.Day
if($HighlightDate -contains $compareDate)
{
$displayDay = "*" + ("{0,2}" -f $currentDay.Day) + "*"
}
}
## Otherwise, highlight as part of a date range.
if($HighlightDay -and ($HighlightDay[0] -eq $currentDay.Day))
{
$displayDay = "[" + ("{0,2}" -f $currentDay.Day) + "]"
$null,$HighlightDay = $HighlightDay
}
## Add the day of the week and the day of the month as note properties.
$currentWeek | Add-Member NoteProperty $dayName $displayDay
## Move to the next day of the month.
$currentDay = $currentDay.AddDays(1)
## If the function reaches the next week, store the current week
## in the week list and continue.
if($currentDay.DayOfWeek -eq $dateTimeFormat.FirstDayOfWeek)
{
$weeks += $currentWeek
$currentWeek = New-Object PsObject
}
}
## Format the weeks as a table.
$calendar = $weeks | Format-Table $dayNames -AutoSize | Out-String
## Add a centered header.
$width = ($calendar.Split("`n") | Measure-Object -Maximum Length).Maximum
$header = "{0:MMMM yyyy}" -f $Start
$padding = " " * (($width - $header.Length) / 2)
$displayCalendar = " `n" + $padding + $header + "`n " + $calendar
$displayCalendar.TrimEnd()
## Move to the next month.
$Start = $Start.AddMonths(1)
}
}
Export-ModuleMember -Function Show-Calendar
PowerShell