[英]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.