none
Помогите с конвертацией VBS to PowerShell RRS feed

  • Вопрос

  • Здравствуйте! 

    Используя программу SAPIEN PowerShell Studio 2012 делаю интерфейс к своим скриптам.

    Есть скрипт который меняет пароли лок администраторов для компьютеров указанных в файле (скрипт ниже.)

    Пишу обработчик для кнопки

    $buttonИзменитьПарольАдмина_Click={
    #Скрипт для смены пароля на вбс
                cscript.exe .\Script\Admin_pwd_chg.exe  
     
    }


    Запускаю программу нажимаю кнопку -  скрипт запускается, предлагает  ввести новый  пароль, открывает книгу эксель с результатами, но без них. Не пойму в чем причина. Помогите разобраться в чем причина или переделать скрипт на PowerShell


    strNewPassword = InputBox ("Enter NEW PASSWORD")
     
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    objExcel.Workbooks.Add
    intRow = 2
     
    objExcel.Cells(1, 1).Value = "Machine Name"
    objExcel.Cells(1, 2).Value = "Password Changed"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile("pc.Txt")
    Do Until objTextFile.AtEndOfStream
    strComputer = objTextFile.ReadLine
    On Error Resume Next
     
    Set objUser = getobject("WinNT://" & strComputer & "/admin,User")
    objUser.SetPassword strNewPassword
    objUser.SetInfo
     
    objExcel.Cells(intRow, 1).Value = UCase(strComputer)
    If Err.Number <> 0 Then
    objExcel.Cells(intRow, 2).Value = "No"
    Err.Clear
    Else
    objExcel.Cells(intRow, 2).Value = "Yes"
    End If
    intRow = intRow + 1
    Loop
     
    objExcel.Range("A1:B1").Select
    objExcel.Selection.Interior.ColorIndex = 19
    objExcel.Selection.Font.ColorIndex = 11
    objExcel.Selection.Font.Bold = True
    objExcel.Cells.EntireColumn.AutoFit
     
    MsgBox "Done"

    22 января 2014 г. 8:52

Ответы

  • [void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
    [void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
    $pass = [Microsoft.VisualBasic.Interaction]::InputBox("Введите пароль", "Пароль")
    
    $ex = New-Object -ComObject Excel.Application
    $ex.Visible = $true
    $ex.Workbooks.Add()
    
    $intRow = 2
    $ex.Cells.Item(1,1) = "Machine Name"
    $ex.Cells.Item(1,2) = "Password Changed"
    
    Get-Content pc.txt | Foreach {
    	$computer = $_
    	$ex.Cells.Item($intRow, 1) = $computer.ToUpper()
    	$user = [ADSI]"WinNT://$computer/admin,User"
    	if($user) {
    		try {
    			$user.SetPassword($pass)
    			$user.SetInfo()
    			$ex.Cells.Item($intRow,2) = "Yes"
    		}
    		catch {
    			$ex.Cells.Item($intRow,2) = "No"
    		}
    	}
    	else {
    		$ex.Cells.Item($intRow,2) = "No"
    	}
    	$intRow++
    }
    		
    $ex.Range("A1:B1").Select()
    $ex.Selection.Interior.ColorIndex = 19
    $ex.Selection.Font.ColorIndex = 11
    $ex.Selection.Font.Bold = $True
    $ex.Cells.EntireColumn.AutoFit()
    
    [System.Windows.Forms.MessageBox]::Show("Done") 



    • Изменено KazunEditor 22 января 2014 г. 9:27
    • Помечено в качестве ответа moonlightchild 22 января 2014 г. 10:20
    22 января 2014 г. 9:26
    Отвечающий