我正在通過運行以下命令來創建本地用戶。
$LocalAccount = New-LocalUser "myaccount" -Password "*****" -FullName "My Account" -Description "My Account" -AccountNeverExpires -PasswordNeverExpires
根據 Microsoft 檔案,New-LocalUsercommand 應該回傳一個LocalUser物件。
在那之后,我將該帳戶添加到Administrators組中,但$LocalAccount即使我可以看到該帳戶已創建,它也因空而失敗。
if ((Get-LocalGroupMember -Group "Administrators" -Member $LocalAccount).Count -eq 0)
{
Add-LocalGroupMember -Group "Administrators" -Member $LocalAccount
}
只有當我將它作為腳本的一部分運行時才會發生這種情況。如果我只是運行 $LocalAccount = New-LocalUser "myaccount" -Password "*****" -FullName "My Account" -Description "My Account" -AccountNeverExpires -PasswordNeverExpires,它作業正常,我可以看到$LocalAccount有新的用戶資訊。
我在這里錯過了什么?
uj5u.com熱心網友回復:
我認為問題是Get-LocalGroupMember在腳本中運行時不會給你任何輸出。這意味著您的If陳述句將始終回傳 false 并且Add-LocalGroupMember不會被執行。
或者,您可以在創建帳戶時將用戶添加到組中:
$LocalAccount = New-LocalUser "myaccount" -Password $Secure_String_Pwd -FullName "My Account" -Description "My Account" -AccountNeverExpires -PasswordNeverExpires -Verbose | Add-LocalGroupMember -Group "Administrators" -Verbose
如果你想保留你的原始腳本,他們嘗試使用write-output:
$LocalAccount = New-LocalUser "myaccount" -Password $Secure_String_Pwd -FullName "My Account" -Description "My Account" -AccountNeverExpires -PasswordNeverExpires -Verbose
if ((Get-LocalGroupMember -Group "Administrators" -Member $LocalAccount -Verbose -ErrorAction SilentlyContinue| Write-Output).Count -eq 0)
{
Add-LocalGroupMember -Group "Administrators" -Member $LocalAccount -Verbose
}
您的if宣告沒有幫助,因為該帳戶是使用新創建的,New-LocalUser因此無需檢查它是否屬于該Administrators組。
uj5u.com熱心網友回復:
首先,您必須將加密密碼傳遞給 New-LocalUser,這可能就是您沒有得到回傳物件的原因。當您執行 Add-LocalGroupMember 或 Get-LocalGroupMember 時,您還需要使用物件的 .Name 部分。此外,代替'-eq 0'(有效),使用'-lt 1'總是更好。最后,如果您想進行計數,請考慮使用“度量”。
粗略的作業示例:
$passwd = ("thepassword" | ConvertTo-SecureString -AsPlainText -Force)
$AddObj = (New-LocalUser "myaccount" -Password $passwd -FullName "My Account" -Description "My Account" -AccountNeverExpires -PasswordNeverExpires)
if ((Get-LocalGroupMember -Group "Administrators" | where-object Name -match "\\${AddObj.Name}$" | measure).Count -lt 1)
{
Add-LocalGroupMember -Group "Administrators" -Member $AddObj.Name
}
- 請注意,這只是一個粗略的示例,您需要首先檢查用戶,并且最好使用帳戶 ID 而不是物件 IMO 的變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/385544.html
標籤:电源外壳
上一篇:表單,如果所有輸入框都有值,我如何讓我的代碼僅顯示已提交的資訊
下一篇:將相對路徑轉換為絕對字串路徑
