mtt*_*990 4 parameters powershell scripting arguments powershell-5.0
我有一个powershell脚本,可以完成Active Directory和MS Exchange中的一些任务.我需要从我们的呼叫记录系统传入Active Directory用户名.让Call日志系统传递参数很简单.
我面临的问题是让PowerShell将参数读入变量.
我将提供一个概念验证示例.
这是一个将参数传递给powershell的示例命令.
C:\Users\UserName\Desktop\Test.ps1 -ADusername "Hello World"
Run Code Online (Sandbox Code Playgroud)
以下是示例脚本:
Param([string]$adusername)
$adusername
pause
Run Code Online (Sandbox Code Playgroud)
我期待以下输出:
Hello World
Press Enter to continue...:
Run Code Online (Sandbox Code Playgroud)
这是实际输出:
Press Enter to continue...:
Run Code Online (Sandbox Code Playgroud)
围绕这个核心概念围绕我的头脑将对我有很大的帮助.我无法找到适用于我的场景时有用的任何示例或教程.我很抱歉,如果这是一个重复的帖子,也无法在这个网站上找到任何东西.
编辑:每个请求,这是我的完整脚本:http://pastebin.com/ktjpLQek
如果你避免尝试使用params并以这种方式调用脚本,我想你会有更好的运气.
这是可能的,但如果您将脚本文件内联如下,则参数更好地工作:
. .\scriptFile.ps1
function "Hello World"
Run Code Online (Sandbox Code Playgroud)
然而,更接近你正在做的事情,你应该使用$ args 并调用PowerShell(exe直接)
如果你调用你的脚本文件:(我使用了runbox)
powershell c:\Path\Folder\Script.ps1 "Hello World!"
Run Code Online (Sandbox Code Playgroud)
然后替换你Param([string]$adusername):
$adUserName = $args[0]
write-host $adUserName
Run Code Online (Sandbox Code Playgroud)
此外,这应该适合你(解剖):
Param([string]$ad)
Write-Host $args[0]
Write-Host $ad
Read-Host
pause
Run Code Online (Sandbox Code Playgroud)
使用路径powershell调用脚本 c:\Path\Folder\Script.ps1 "Hello World!" $ad = "JSmith"
如果这不起作用,则应确保正确设置执行策略.Get-ExecutionPolicy将告诉您当前的级别.对于测试,您可以将其设置得非常低Set-ExecutionPolicy unrestricted
| 归档时间: |
|
| 查看次数: |
22648 次 |
| 最近记录: |