2015-06-08 38 views
1

我有以下的PS腳本PowerShell的不承認boolean變量

param (
    # FQDN or IP address of the Domain Controller 
    [Parameter(Mandatory=$True)] 
    [string]$ADaddress, 

    # Active directory domain name 
    # example: directory.local 
    [Parameter(Mandatory=$True)] 
    [string]$ADDomainName, 

    # Domain admin 
    # example: [email protected] 
    [Parameter(Mandatory=$True)] 
    [string]$domainAdmin, 

    # Domain admin password 
    [Parameter(Mandatory=$True)] 
    [string]$domainAdminPassword, 

    # User to be added 
    # example: testUser 
    [Parameter (Mandatory=$True)] 
    [string]$newUsername, 

    # Password of th user to be added 
    # example: 1!2#4%6 
    [Parameter (Mandatory=$True)] 
    [string]$newPassword, 

    # SAM account name of the user to added 
    # example: testuser 
    [Parameter (Mandatory=$True)] 
    [string]$newSamAccountName, 

    # Display name of the user to added 
    # example: "Test user for test purposes" 
    [Parameter (Mandatory=$True)] 
    [string]$newUserDisplayName 
) 

$domainAdminSecurePassword = $domainAdminPassword | ConvertTo-SecureString -asPlainText -Force 
$domainAdminCredential = New-Object System.Management.Automation.PSCredential($domainAdmin, $domainAdminSecurePassword) 
$newUserSecurePassword = $newPassword | ConvertTo-SecureString -asPlainText -Force 
$UPN= $newUsername+"@"+$ADDomainName 


Invoke-Command -ComputerName $ADaddress -Credential $domainAdminCredential ` 
    -ScriptBlock {` 
     param($newUsername, $newUserSecurePassword, $newSamAccountName, $newUserDisplayName, $UPN) ` 
     new-aduser -name $newUsername -AccountPassword $newUserSecurePassword -Enabled $true -SamAccountName $newSamAccountName -DisplayName $newUserDisplayName -UserPrincipalName $UPN -PasswordNeverExpires $true` 
    } ` 
    -ArgumentList $newUsername, $newUserSecurePassword, $newSamAccountName, $newUserDisplayName, $UPN 

芹苴問題調用該腳本時,我得到的是:

Cannot convert 'System.String' to the type 'System.Nullable`1[System.Boolean]' required by parameter 'PasswordNeverExpires'. 

我試圖通過代替1,通過[布爾] $真但結果保持不變。我是PS新手,我迷失在這裏。任何人都可以點亮一下問題可能是什麼?

+1

嗯,也許逃避'$ TRUE'美元符號?另外,請使用'(Get-Credential)'作爲獲取域管理員用戶名和密碼的方法,並且如果可能的話,不要將它們作爲命令行參數傳遞。 – Vesper

+0

仍然相同:/ –

+0

如果是這樣,可能會添加一行'$ PNE = $ true'並在參數列表中添加'$ PNE'到您的scriptblock?這樣你就可以將一個布爾值作爲參數放入它中,並且不應該有類型轉換的問題。 – Vesper

回答

1

好的,我找到了問題所在。 更改: -PasswordNeverExpires $ TRUE`

-PasswordNeverExpires $`真 (加入後真有一個空格)

+1

親愛的我,我一開始就提出這個訣竅,但後來又想到了,並編輯了評論。可憐 :) – Vesper