我需要有关创建文件夹的帮助。我正在提取Azure订阅的报告,这些报告保存在多个txt文件中,例如1App.txt、2App.txt。提取的报告保存在一个文件夹名称输出中。
我需要根据txt文件的名称创建一个文件夹,并将输出文件夹中的文件移动到新创建的文件夹中。还可以设置一个条件,如果订阅的是1App.txt,则保存在输出中的文件应移动到1App文件夹中。还需要设置一个条件,以便它应该能够移动文件到现有的文件夹时,脚本再次运行。
$Folder = 'C:\Scrpting\Subscriptions'
$Files = Get-ChildItem -Path $Folder -File | Select-Object -ExpandProperty FullName
$AzSubs = Get-Content -Path $Files
$AzSubs
$Result = ForEach ($AzSub in $AzSubs) {
Set-AzContext -SubscriptionName $AzSub
$Userroles = Get-AzRoleAssignment | Where-Object -FilterScript { $_.ObjectType -eq "User" }
Foreach ($User in $Userroles) {
$info = "" | Select "DisplayName", "SignInName", "RoleDefinitionName", "SubscriptionName"
$info.DisplayName = $User.DisplayName
$info.SignInName = $User.SignInName
$info.RoleDefinitionName = $User.RoleDefinitionName
$info.SubscriptionName = $AzSub
$info | Export-Csv C:\Scrpting\Output\UserRoles$((Get-Date).ToString("yyyyMMdd")).csv -Append
}
}
ForEach ( $azSub in $azSubs ) {
Set-AzContext -SubscriptionName $azSub
$azNsgs = Get-AzNetworkSecurityGroup
$Output = ForEach ( $azNsg in $azNsgs ) {
#Export custom rules
Get-AzNetworkSecurityRuleConfig -NetworkSecurityGroup $azNsg | `
Select-Object @{label = 'NSG Name'; expression = { $azNsg.Name } }, `
@{label = 'NSG Location'; expression = { $azNsg.Location } }, `
@{label = 'Rule Name'; expression = { $_.Name } }, `
@{label = 'Source'; expression = { $_.SourceAddressPrefix } }, `
@{label = 'Source Application Security Group'; expression = { $_.SourceApplicationSecurityGroups.id.Split('/')[-1] } },
@{label = 'Source Port Range'; expression = { $_.SourcePortRange } }, Access, Priority, Direction, `
@{label = 'Destination'; expression = { $_.DestinationAddressPrefix } }, `
@{label = 'Destination Application Security Group'; expression = { $_.DestinationApplicationSecurityGroups.id.Split('/')[-1] } }, `
@{label = 'Destination Port Range'; expression = { $_.DestinationPortRange } }, `
@{label = 'Resource Group Name'; expression = { $azNsg.ResourceGroupName } },
@{label = 'Subscription Name'; expression = { $azSub } }
}
$Output | Export-Csv -Path C:\Scrpting\Output\FirewallRules$((Get-Date).ToString("yyyyMMdd")).csv -Append
}
ForEach ($AzSub in $AzSubs) {
# change azure subscription
Set-AzContext -SubscriptionID $AzSub
$vms = Get-AzVM
$vmrg = Get-AzVM | Select-Object "ResourceGroupName"
$nics = get-AzNetworkInterface | ? { $_.VirtualMachine -NE $null }
ForEach ($nic in $nics) {
$info = "" | Select VMName, ResourceGroupName, OS, PrivateIPAddress, PublicIPAddress, SubscriptionID, Status, NICName
$vm = $vms | ? -Property Id -eq $nic.VirtualMachine.id
$info.NICName = $nic.Name
$info.VMName = $vm.Name
$info.SubscriptionID = $subscriptionId
$info.ResourceGroupName = $vm.ResourceGroupName
$info.PrivateIPAddress = $nic.IpConfigurations.PrivateIpAddress
$PublicIPAddress = (Az vm list-ip-addresses --name $vm.Name --resource-group $vm.ResourceGroupName | ConvertFrom-Json).virtualMachine.network.publicIpAddresses.ipaddress
$info.PublicIPAddress = if ($PublicIPAddress -eq $null) { "Not Assigned" } else { $PublicIPAddress }
$info.OS = $vm.StorageProfile.osDisk.osType
$info.Status = ((Get-AzVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name -Status).Statuses[1]).code
$info | Export-Csv -Path C:\Scrpting\Output\VMInfo$((Get-Date).ToString("yyyyMMdd")).csv -Append
}
}
1条答案
按热度按时间umuewwlo1#
使用
Test-Path
和New-Item
有条件地创建以文件的基本名称命名的文件夹: