簡體   English   中英

將參數傳遞給Powershell

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM