2015-07-05 61 views
1

我使用PowerShell試驗,以Twitter和有以下問題:登錄通過PowerShell中

當我想登錄使用調用-的WebRequest

$r = Invoke-WebRequest -Uri "http://www.twitter.com" 
$r.Forms[1].Fields.session[username_or_email] = "user" 
$r.Forms[1].Fields.session[password] = "password" 

到Twitter和試圖分配一個值請求對象,這是不可能的,因爲他們的字段的Twitter命名約定。這是我得到的錯誤信息

表達式或語句中的意外標記'username_or_email]'。

有沒有一些簡單的方法來逃避這些字符?

回答

2

字段的名稱是session[username_or_email]在PowerShell中你必須提到這兩種方法:

# dot notation, but it must be quoted because of special characters 
$r[1].Fields."session[username_or_email]" 

# array notation, must be quoted either way 
$r[1].Fields["session[username_or_email]"] 

通常情況下,你可能只是做$r[1].Fields.TheFieldName但你必須把它放在因爲特殊字符的報價參與其中。

另外,我會指出,在$r響應應該已經解析所有字段爲對象,讓您標籤完成它們,但這個對象做了奇怪的事情:如果<input>場具有id屬性,它將基於該名稱而不是名稱命名對象,這就是爲什麼您會找到名爲signin-email的字段,但沒有一個名稱爲session[username_or_email]

如果您在提交時導致問題,則可能需要手動刪除基於id的字段。

+1

通過手動刪除id命名錶單域,你的意思是'$ r.Forms [1] .Fields.Remove('signin-email')'? –

+0

@凱斯山,是的。 – briantist

+0

謝謝,我教過,因爲ps智能感知,我不能用引號。愚蠢的我:) – nemke