我正在尝试对 Azure VM 使用 DSC 扩展。我已经使用主 PS 文件创建了 zip 存档,并在主存档中包含了附加存档,以及几个附加文件 应用 DSC 扩展后,我在 DSC 目录中看到我的附加存档
我的问题是,如何获取该路径 C:\Packages\Plugins\Microsoft.Powershell.DSC\2.83.5\DSCWork\IISInstall.0 以便将来在我的 DSC 脚本中使用?我试图找到任何包含该路径的环境变量?但徒劳。 也许你们知道如何管理它?我很感激任何帮助。谢谢大家
最佳答案
我已经在 PowerShell 中创建了 DSC 扩展 .ps1 文件,并将 iis Install.ps1 脚本放置在指定的虚拟机上,它成功执行,如下所示:
$resourceGroup = 'dscVmDemo'
$vmName = 'myVM'
$storageName = 'demostorage'
#Publish the configuration script to user storage
Publish-AzVMDscConfiguration -ConfigurationPath .\iisInstall.ps1 -ResourceGroupName $resourceGroup -StorageAccountName $storageName -force
#Set the VM to run the DSC configuration
Set-AzVMDscExtension -Version '2.80' -ResourceGroupName $resourceGroup -VMName $vmName -ArchiveStorageAccountName $storageName -ArchiveBlobName 'iisInstall.ps1.zip' -AutoUpdate -ConfigurationName 'IISInstall'
存储帐户中自动上传的文件:
在您的场景中,要在 DSC 脚本中获取该路径,请使用 $env:TEMP
环境变量。名称以“DSC”开头的临时文件夹由 DSC 扩展在 $env:TEMP
目录中创建。您可以在此文件夹中保存 DSC 脚本所需的文件。
$DSCWorkPath = Join-Path $env:TEMP "DSC" -ChildPath "Microsoft.Powershell.DSC\2.83.5\DSCWork\IISInstall.0"
如果您对 DSC 脚本中的特定版本号或子目录进行硬编码,则值将来可能会发生变化。
您可以使用以下脚本动态解析 DSC 工作目录路径:
$extensionPath = $env:ProgramData + '\Packages\Plugins\Microsoft.Powershell.DSC\'
$versionFolders = Get-ChildItem -Path $extensionPath | Sort-Object -Property Name -Descending
$latestVersionFolder = $versionFolders[0].Name
$workingDirectory = Join-Path -Path $extensionPath -ChildPath ($latestVersionFolder + '\DSCWork\IISInstall.0')
这样,即使版本号发生变化,您的脚本也会自动使用可用的最新版本。
引用:
Desired State Configuration for Azure overview - Azure Virtual Machines | Microsoft Learn
关于Azure DSC 扩展。如何使用存档中的其他项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76867248/