إنشاء ملف يحتوي على محتوى
الوصف
يوضح هذا المثال كيفية استخدام Script
المورد لإنشاء ملف.
لاستخدام Script
المورد، تحتاج إلى تحديد ثلاث كتل تعليمات برمجية. GetScriptوTestScript و SetScript.
يستخدم هذا المثال معلمتين لإدخال المستخدم. يعين FilePath المسار الذي يجب أن يكون الملف موجودا فيه ويعين FileContent محتويات الملف. تتم الإشارة إلى هذه القيم في scriptblocks مع using
التوجيه.
GetScript
$fileContent = $null
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
}
return @{
Result = $fileContent
}
في GetScript scriptblock، تتحقق التعليمات البرمجية لمعرفة ما إذا كان الملف المحدد بواسطة FilePath موجودا. إذا كان الأمر كذلك، يقوم scriptblock بإرجاع محتويات هذا الملف الحالية للنتيجة. إذا لم يحدث ذلك، يعود $null
scriptblock للنتيجة.
TestScript
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
return ($fileContent -eq $using:FileContent)
} else {
return $false
}
في TestScript scriptblock، تتحقق التعليمات البرمجية لمعرفة ما إذا كان الملف المحدد بواسطة FilePath موجودا. إذا لم يكن كذلك، فسيرجع $false
scriptblock . إذا كان موجودا، فإن التعليمات البرمجية تقارن المحتويات الحالية للملف بالمحتويات المحددة بواسطة FileContent. إذا تطابقت المحتويات، يرجع $true
scriptblock . إذا لم يحدث ذلك، يرجع $false
scriptblock .
SetScript
$streamWriter = New-Object -TypeName 'System.IO.StreamWriter' -ArgumentList @(
$using:FilePath
)
$streamWriter.WriteLine($using:FileContent)
$streamWriter.Close()
في SetScript scriptblock، تنشئ التعليمات البرمجية كائن System.IO.StreamWriter للكتابة إلى الملف المحدد بواسطة FilePath. يكتب المحتوى المحدد بواسطة FileContent ثم يغلق كائن StreamWriter .
مع Invoke-DscResource
يوضح هذا البرنامج النصي كيف يمكنك استخدام Script
المورد مع Invoke-DscResource
cmdlet للتأكد من وجود ملف بمحتوى معين.
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$FilePath,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$FileContent
)
begin {
$SharedParameters = @{
Name = 'Script'
ModuleName = 'PSDscResource'
Properties = @{
SetScript = {
$streamWriter = New-Object -TypeName 'System.IO.StreamWriter' -ArgumentList @(
$using:FilePath
)
$streamWriter.WriteLine($using:FileContent)
$streamWriter.Close()
}
TestScript = {
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
return ($fileContent -eq $using:FileContent)
} else {
return $false
}
}
GetScript = {
$fileContent = $null
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
}
return @{
Result = $fileContent
}
}
}
}
}
process {
$TestResult = Invoke-DscResource -Method Test @SharedParameters
if ($TestResult.InDesiredState) {
Invoke-DscResource -Method Get @SharedParameters
} else {
Invoke-DscResource -Method Set @SharedParameters
}
}
مع تكوين
توضح هذه القصاصة البرمجية كيف يمكنك تعريف Configuration
مع كتلة Script
موارد للتأكد من وجود ملف بمحتوى معين.
Configuration ScriptExample {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$FilePath,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$FileContent
)
Import-DscResource -ModuleName 'PSDscResources'
Node localhost {
Script ScriptExample {
SetScript = {
$streamWriter = New-Object -TypeName 'System.IO.StreamWriter' -ArgumentList @(
$using:FilePath
)
$streamWriter.WriteLine($using:FileContent)
$streamWriter.Close()
}
TestScript = {
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
return ($fileContent -eq $using:FileContent)
} else {
return $false
}
}
GetScript = {
$fileContent = $null
if (Test-Path -Path $using:FilePath) {
$fileContent = Get-Content -Path $using:filePath -Raw
}
return @{
Result = $fileContent
}
}
}
}
}
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ