我的输出代码在PowerShell 3.0中运行时遇到问题。我看了一遍,似乎无法找到答案。我想使用SaveFileDialog来帮助输出文件。这是一个更大的代码的一部分,它会询问用户是否要在导入之前导出。它用于从交换输出代码。下面是我得到的代码。它有效,但它有两个弹出的对话框,任何人都可以对此有所了解吗?
[string]$Export = Read-Host "Would you like to export? [y/n]"
IF ($Export -eq "y")
{
Function Get-FileName($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
Out-Null
$SaveFileDialog = New-Object System.Windows.Forms.SaveFileDialog
$SaveFileDialog.initialDirectory = $initialDirectory
$SaveFileDialog.filter = “Text files (*.txt)|*.txt|All files (*.*)|*.*”
$SaveFileDialog.ShowDialog() | Out-Null
$SaveFileDialog.filename
}
Get-FileName -initialDirectory "%USERDATA%\desktop\"
$Savefile = Get-Filename
get-mailboxfolderpermission -identity $Email":\" | ft foldername, User, AccessRights -AutoSize | out-file $Savefile -Append -Width 500
Foreach ($Folder in $folders)
{
$NormalizedFolder = $Folder.FolderPath.Replace("/","\")
$NormalizedIdentity = $Email + ":" + $NormalizedFolder
get-mailboxfolderpermission -identity $NormalizedIdentity | ft foldername, User, AccessRights -AutoSize | out-file $Savefile -Append -Width 500
}
}
答案 0 :(得分:1)
答案是你连续两次调用该函数。你的行:
Get-FileName -initialDirectory "%USERDATA%\desktop\"
不设置该功能的某些设置,它正在调用它,并指定初始目录。它不会保存响应或对其执行任何操作,因此文本应该只返回到屏幕。然后是你的下一行:
$Savefile = Get-Filename
再次调用相同的函数,这次没有指定初始目录,并将响应保存在$SaveFile
变量中。
删除第一个Get-File -initialDirectory
行,并将-initialdirectory $env:UserProfile\Desktop
添加到$Savefile =
行。
编辑:我认为我评论将功能置于脚本顶部这是相当标准的做法。这样,它们首先被处理,并且可以根据需要通过整个脚本随时可用。将它放在IF语句中意味着它可能永远不会加载,如果您想在稍后的脚本中使用它,它就不会存在。将它移到顶部并在以后需要时可以使用它通常没有害处。