powershell - PowerShell - 让用户使用文件资源管理器选择路径
问题描述
所以我目前正在制作一个 PowerShell 脚本来放置在我们的 DC 上,它将在 Active Directory 中创建用户,它将使用函数来显示菜单并执行命令,并允许创建单个用户或创建 CSV。
我试图让它尽可能地证明白痴,并尽可能多地消除人为错误。我想做的是使用文件资源管理器窗口提示用户,这样当 CSV 函数查找要导入的 CSV 本身的路径时,用户首先在资源管理器中打开它,无需键入完整的文件路径。
这是我目前的 CSV 函数供参考:
function csv {
$Path = read-host "Where is the CSV stored? Make sure it is in a Readable Location"
# Here is where The user would be prompted for the path of the CSV
$Users = Import-Csv -Path $Path
foreach ($User in $Users)
{
$Displayname = $User.'Firstname' + " " + $User.'Lastname'
$UserFirstname = $User.'Firstname'
$UserLastname = $User.'Lastname'
$OU = $User.'OU'
$SAM = $User.'SAM'
$UPN = $User.'Firstname' + "." + $User.'Lastname' + "@" + $User.'Maildomain'
$Description = $User.'Description'
$Password = $User.'Password'
New-ADUser -Name "$Displayname" -DisplayName "$Displayname" -SamAccountName $SAM -UserPrincipalName $UPN -GivenName "$UserFirstname" -Surname "$UserLastname" -Description "$Description" -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -Path "$OU" -ChangePasswordAtLogon $false –PasswordNeverExpires $true
}
}
所以这是我的问题,这是一个好主意还是每次都用更新的路径编辑脚本会更好?
感谢您对此的帮助!
迪伦
解决方案
我使用以下函数,可调用例如,$FileName = Select-File -StartingFolder "C:\Users\Michael\Documents" -NameFilter "CSV Files (*.CSV)|*.CSV"
function Select-File {
[CmdletBinding()]
param(
[Parameter(ParameterSetName="Single")]
[Parameter(ParameterSetName="Multi")]
[Parameter(ParameterSetName="Save")]
[string]$StartingFolder = [environment]::getfolderpath("mydocuments"),
[Parameter(ParameterSetName="Single")]
[Parameter(ParameterSetName="Multi")]
[Parameter(ParameterSetName="Save")]
[string]$NameFilter = "All Files (*.*)|*.*",
[Parameter(ParameterSetName="Single")]
[Parameter(ParameterSetName="Multi")]
[Parameter(ParameterSetName="Save")]
[switch]$AllowAnyExtension,
[Parameter(Mandatory=$true,ParameterSetName="Save")]
[switch]$Save,
[Parameter(Mandatory=$true,ParameterSetName="Multi")]
[Alias("Multi")]
[switch]$AllowMulti
)
if ($Save) {
$Dialog = New-Object -TypeName System.Windows.Forms.SaveFileDialog
} else {
$Dialog = New-Object -TypeName System.Windows.Forms.OpenFileDialog
if ($AllowMulti) {
$Dialog.Multiselect = $true
}
}
if ($AllowAnyExtension) {
$NameFilter = $NameFilter + "|All Files (*.*)|*.*"
}
$Dialog.Filter = $NameFilter
$Dialog.InitialDirectory = $StartingFolder
[void]($Dialog.ShowDialog())
$Dialog.FileNames
}
推荐阅读
- email - 管理员如何配置 GSuite 用户邮箱签名
- apache-flink - 如果单个任务管理器崩溃,是否应该重新启动整个集群?
- pandas - 转换输入字符串:未列出?
- laravel - Laravel 队列未从 Kernel.php 读取更新
- slack-api - 在频道中最后一条消息的 4 个月后归档松弛频道
- c# - HashSet 是否保留插入顺序*如果没有项目被删除*
- vue.js - 如何将 OpenStreetMap 添加到我的 NUXT 应用程序
- python - 从python中的列表中获取一个单词
- python - 如何在 Python 中仅捕获某种类型的 ValueError?
- angular - 过滤表的工具栏