Installera en cab-fil med det angivna namnet från den angivna sökvägen
Description
Det här exemplet visar hur du kan använda resursens WindowsPackageCab
användardefinierade värden för att säkerställa att ett paket har installerats.
Du måste ange namnet på paketet med parametern Namn , som anger resursens namnegenskap .
Du måste ange sökvägen till .cab
filen som paketet kan installeras från med parametern SourcePath , som anger sourcepath-egenskapen för resursen.
Du måste ange sökvägen till en loggfil med LogPath-parametern , som anger LogPath-egenskapen för resursen.
Med Se till inställt på Present
, egenskapen Namn inställd på värdet som tillhandahålls av användaren från parametern Namn och SourcePath inställt på det användaringivna värdet från SourcePath-parametern , installerar resursen det namngivna paketet från den angivna .cab
filen om det inte redan är installerat.
Med LogPath inställt på det användardefinierade värdet från LogPath-parametern skriver resursen loggarna för att installera paketet i filen i stället för %WINDIR%\Logs\Dism\dism.log
.
Med Invoke-DscResource
Det här skriptet visar hur du kan använda resursen WindowsPackageCab
med cmdleten Invoke-DscResource
för att säkerställa att ett användardefinerat paket har installerats.
[CmdletBinding()]
param(
[Parameter (Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$Name,
[Parameter (Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$SourcePath,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$LogPath
)
begin {
$SharedParameters = @{
Name = 'WindowsPackageCab'
ModuleName = 'PSDscResource'
Properties = @{
Name = $Name
Ensure = 'Present'
SourcePath = $SourcePath
LogPath = $LogPath
}
}
$NonGetProperties = @(
'Ensure'
'SourcePath'
'LogPath'
)
}
process {
$TestResult = Invoke-DscResource -Method Test @SharedParameters
if ($TestResult.InDesiredState) {
$QueryParameters = $SharedParameters.Clone()
foreach ($Property in $NonGetProperties) {
$QueryParameters.Properties.Remove($Property)
}
Invoke-DscResource -Method Get @QueryParameters
} else {
Invoke-DscResource -Method Set @SharedParameters
}
}
Med en konfiguration
Det här kodfragmentet visar hur du kan definiera ett Configuration
med ett WindowsPackageCab
resursblock för att säkerställa att ett användardefinieringspaket har installerats.
Viktigt
Det finns en begränsning i datorkonfigurationen som hindrar en DSC-resurs från att använda powershell-cmdletar som inte ingår i själva PowerShell eller i en modul på PowerShell-galleriet. Det här exemplet tillhandahålls i demonstrativt syfte, men eftersom DSC-resursen använder cmdletar från DISM-modulen, som levereras som en av Windows-modulerna, fungerar det inte i datorkonfigurationen.
Configuration Install {
param(
[Parameter (Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$Name,
[Parameter (Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$SourcePath,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$LogPath
)
Import-DscResource -ModuleName 'PSDscResources'
Node Localhost {
WindowsPackageCab ExampleWindowsPackageCab {
Name = $Name
Ensure = 'Present'
SourcePath = $SourcePath
LogPath = $LogPath
}
}
}