[英]Pass argument into Powershell
我有一个powershell脚本,可以完成Active Directory和MS Exchange中的一些任务。 我需要从我们的呼叫记录系统传入Active Directory用户名。 让Call日志系统传递参数很简单。
我面临的问题是让PowerShell将参数读入变量。
我将提供一个概念验证示例。
这是一个将参数传递给powershell的示例命令。
C:\Users\UserName\Desktop\Test.ps1 -ADusername "Hello World"
以下是示例脚本:
Param([string]$adusername)
$adusername
pause
我期待以下输出:
Hello World
Press Enter to continue...:
这是实际输出:
Press Enter to continue...:
围绕这个核心概念围绕我的头脑将对我有很大的帮助。 我无法找到适用于我的场景时有用的任何示例或教程。 我很抱歉,如果这是一个重复的帖子,也无法在这个网站上找到任何东西。
编辑:每个请求,这是我的完整脚本: http : //pastebin.com/ktjpLQek
如果你避免尝试使用params并以这种方式调用脚本,我想你会有更好的运气。
这是可能的,但如果您将脚本文件内联如下,则参数更好地工作:
. .\scriptFile.ps1
function "Hello World"
然而,更接近你正在做的事情,你应该使用$ args 并调用PowerShell(exe直接)
如果你调用你的脚本文件:(我使用了runbox)
powershell c:\Path\Folder\Script.ps1 "Hello World!"
然后将您的Param([string]$adusername)
替换为:
$adUserName = $args[0]
write-host $adUserName
此外,这应该适合你(解剖):
Param([string]$ad)
Write-Host $args[0]
Write-Host $ad
Read-Host
pause
使用路径调用脚本,powershell c:\\Path\\Folder\\Script.ps1 "Hello World!" $ad = "JSmith"
c:\\Path\\Folder\\Script.ps1 "Hello World!" $ad = "JSmith"
如果这不起作用,则应确保正确设置执行策略。 Get-ExecutionPolicy将告诉您当前的级别。 对于测试,您可以将Set-ExecutionPolicy unrestricted
, Set-ExecutionPolicy unrestricted
其设置得非常低
将以下内容添加到脚本的顶部。
Param(
[Parameter(Mandatory=$true)]
[string]$Euser
)
Write-Host "Deactivating $EUser"
cd之后调用示例到脚本目录
.\ScriptName.ps1 -Euser "FOO" # Tab auto completion works
新脚本中的以下内容适合我。
Param([string]$servers)
"You chose $servers"
PS C:\\ scripts>。\\ Untitled1.ps1“this test”
你选择了这个测试
PS C:\\ scripts>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.