我已經得到了我希望用自動化的幾件事情的包裝PowerShell腳本行。這是非常基本的,並且接受一個參數,我希望腳本運行,就好像它是腳本中的一行一樣。我絕對不能讓它工作。執行傳遞到PowerShell腳本參數,就好像它是在腳本
例如:
param([string[]] $p)
echo $p
# Adds the base cmdlets
Add-PSSnapin VMware.VimAutomation.Core
# Add the following if you want to do things with Update Manager
Add-PSSnapin VMware.VumAutomation
# This script adds some helper functions and sets the appearance. You can pick and choose parts of this file for a fully custom appearance.
. "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-VIToolkitEnvironment.ps1"
$p
在上面的例子中,我想$ p來執行,就好像它是在腳本行。我知道這是不安全的,這可能是問題所在。
這裏是我嘗試運行腳本,並在參數傳遞爲$ P:
D:\ps\test>powershell -command "D:\ps\test\powershell_wrapper.ps1" 'Suspend-VM servername -Verbose -Confirm:$False'
我怎樣才能讓我的參數「掛起VM服務器名-Verbose -Confirm:$假」運行在我的腳本里面?如果我只是將值包含在腳本中,而不是作爲參數傳入,它將毫無問題地運行...
這似乎並不真正是爲我工作 - 當我調用的表情,我只是得到傳遞給屏幕的字符串...做一些Google搜索嘗試並找出這個問題,但可能是在正確的軌道上。很好的解釋btw。 – user797963 2012-07-20 14:53:19
想通了!再次感謝。問題是在我的命令中轉義字符 - powershell與轉義複雜命令討厭。 Invoke-Expression完美運作。 – user797963 2012-07-20 22:38:06