运行提升的Powershell脚本并导入系统模块

时间:2015-02-23 10:13:29

标签: windows powershell csv batch-file

我尝试使用批处理文件调用.PS1来生成仅包含用户名和其他电话号码详细信息的csv文件。我有脚本来生成csv文件。

Get-ADUser -Filter * -Properties otherTelephone | 
    select name, @{L='otherTelephone'; E={$_.otherTelephone[0]}} | sort-object otherTelephone | select-object -last 1000 | 
    Export-Csv C:\Test.csv -NoTypeInformation

我有批处理文件来提升PowerShell

powershell -noprofile -command "&{ start-process powershell -ArgumentList '-noprofile -file C:\Test.ps1' -verb RunAs}"

问题是当我尝试通过添加

导入系统模块时
powershell.exe -ImportSystemModules

到powershell脚本的前面,CSV只返回标题信息,例如名字和其他电话。如果我手动导入模块,即右键单击导入系统模块,但是在我尝试在运行脚本之前加载模块时,脚本无效。

基本上我需要以管理员身份运行PS脚本,导入系统模块并让代码输出我的数据。

对于我出错的地方有任何帮助表示赞赏。

powershell.exe -ImportSystemModules Get-ADUser -Filter * -Properties otherTelephone | 
    select name, @{L='otherTelephone'; E={$_.otherTelephone[0]}} | sort-object otherTelephone | select-object -last 10 | 
    Export-Csv C:\Test.csv -NoTypeInformation

1 个答案:

答案 0 :(得分:0)

如果需要在脚本中加载模块,请使用以下代码:

Get-Module -ListAvailable | Where-Object {$_.Path -like "$PSHOME*"} | Import-Module

-ImportSystemModules开关是powershell.exe的标志。如果在脚本内部调用powershell.exe -ImportSystemModules,它将启动另一个PowerShell实例并加载其中的模块。

您还可以将-ImportSystemModules添加到批处理文件中的powershell调用中。这也应该有用

此致