我正在嘗試創建一個powershell,它將從excel表中獲取變數,然后將它們添加到powersehll命令中。
在excel表中我有3列我對來自(名稱,資源組,位置)的資料感興趣然后對于每一行我希望它決議到powershell的變數欄位中我已經創建了powershell來做什么我需要,但如果它可以回圈并拉動它會更好,因為我只是再次運行命令,并從 excel 手動添加不同的機器資訊。
通過@Theo 幫助
我現在正在使用這個版本的腳本
Import-Csv -Path 'c:\scripts\vmtest.csv' | ForEach-Object {
# combine the VMName with suffix '-Snapshot'
$snapshotName = $vm.name "-Snapshot"
$SnapshotStorage = "Azure-Snapshots"
$vm = Get-AzVM -ResourceGroupName $_.ResourceGroup -Name $_.Name
# using splatting for better readability
$configParams = @{
SourceUri = $vm.StorageProfile.OsDisk.ManagedDisk.Id
Location = $_.location
CreateOption = 'copy'
}
$snapshot = New-AzSnapshotConfig @configParams
New-AzSnapshot -Snapshot $snapshot -SnapshotName $snapshotname -ResourceGroupName $snapshotstorage
}
uj5u.com熱心網友回復:
如果正如您所評論的那樣,您現在將資料存盤在一個 CSV 檔案中,該檔案可能如下所示:
Name,ResourceGroup,Location
PRD-ITM001,SJAVIRTUALMACHINES,uksouth
TST-GRSSQL001,SJAVIRTUALMACHINES,uksouth
匯入該資料并遍歷如下記錄變得非常簡單:
Import-Csv -Path 'c:\scripts\vmtest.csv' | ForEach-Object {
# combine the VMName with suffix '-Snapshot'
$snapshotName = '{0}-Snapshot' -f $_.Name
$SnapshotStorage = "Azure-Snapshots"
$vm = Get-AzVM -ResourceGroupName $_.ResourceGroup -Name $_.Name
# using splatting for better readability
$configParams = @{
SourceUri = $vm.StorageProfile.OsDisk.ManagedDisk.Id
Location = $_.Location
CreateOption = 'copy'
}
$snapshot = New-AzSnapshotConfig @configParams
New-AzSnapshot -Snapshot $snapshot -SnapshotName $snapshotName -ResourceGroupName $_.ResourceGroup
}
請注意,上面的代碼假定您的 CSV 使用(默認)逗號作為分隔符。如果在您的情況下這是其他字符,請附加引數,-Delimiter后跟 csv 使用的字符。
- 在 ForEach-Object {..} 回圈中,
有關詳細資訊,請參閱有關如何在 PowerShell 中使用PSExcel 模塊讀取 excel 檔案的博客文章。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408495.html標籤:
