ActiveDirectoryとMSExchangeでいくつかのタスクを完了するPowerShellスクリプトがあります。通話記録システムからActiveDirectoryユーザー名を渡す必要があります。コールログシステムに引数を渡すのは簡単です。
私が直面している問題は、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を直接)を呼び出す
スクリプトファイルを次のように呼び出す場合:(私はランボックスを使用しました)
_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"
_を使用してスクリプトを呼び出します
これが機能しない場合は、実行ポリシーが正しく設定されていることを確認する必要があります。 Get-ExecutionPolicyは、現在のレベルを示します。テストでは、_Set-ExecutionPolicy unrestricted
_を使用して非常に低く設定できます。
スクリプトの先頭に以下を追加します。
Param(
[Parameter(Mandatory=$true)]
[string]$Euser
)
Write-Host "Deactivating $EUser"
スクリプトディレクトリにcdした後にexampleを呼び出す
.\ScriptName.ps1 -Euser "FOO" # Tab auto completion works
新しいスクリプトの次のことは私のために働きます。
Param([string]$servers)
"You chose $servers"
PS C:\ scripts>。\ Untitled1.ps1 "このテスト"
このテストを選択しました
PS C:\ scripts>