4

スクリプトを最初からやり直すにはどうすればよいですか?3つのスイッチがあり、スクリプトの最初に戻してほしい。

Import-Module ActiveDirectory
Write-Host "--Please Login using a.account--"
#login
$credential = Get-Credential
#Main
Write-Host "--Remote Computer Rename v2.0--"
Write-Host "1. Query AD (Outputs to a text file)"
Write-Host "2. Quick computer rename"
Write-host "3. Quit"
$choice=Read-Host "Chose a number to continue"

#AD Query for computer
switch ($choice)
{
 1 {
Write-Host "--Enter first five characters of computer name or full computer name i.e.     USCLT--"
$cn=Read-Host 'Computer name'
$out="$cn*"
Get-ADComputer -Filter 'SamAccountName -like $out' >> c:\myscripts\dsquery.txt
Write-Host "Query complete.  See dsquery.txt saved to Desktop."
}

...rest of my code.

したがって、デスクトップに保存されたdsquery.txtを参照してください。」書き込みホスト部分に戻したい。

4

4 に答える 4

7

シンプル、短い、愚かな:

& cmd /c pause
exit

これは、TOが要求した「Pressanykey」メッセージにも貢献します。PowerShellを使用したい場合:

Read-Host "Press any key to exit..."
exit

ただし、入力を取り戻すこともできます。

$reply = Read-Host "Please type EXIT to exit"
if ($reply -eq "EXIT") { exit; }

Read-Hostcmdのように、Ctrl-Cを入力するとスクリプトが終了するのが好きですpause

于 2013-04-17T14:14:10.650 に答える
3

ユーザー入力をチェックするための私の個人的なお気に入りはdo { } until ()ループです。これがループが追加されたコードです。これにより、探しているものが実現します。

Import-Module ActiveDirectory
Write-Host "--Please Login using a.account--"
#login
$credential = Get-Credential
#Main
do {
Write-Host "--Remote Computer Rename v2.0--"
Write-Host "1. Query AD (Outputs to a text file)"
Write-Host "2. Quick computer rename"
Write-host "3. Quit"
$choice=Read-Host "Chose a number to continue"

#AD Query for computer
switch ($choice)
{
 1 {
Write-Host "--Enter first five characters of computer name or full computer name i.e.     USCLT--"
$cn=Read-Host 'Computer name'
$out="$cn*"
Get-ADComputer -Filter 'SamAccountName -like $out' >> c:\myscripts\dsquery.txt
Write-Host "Query complete.  See dsquery.txt saved to Desktop."
}

...rest of my code.
} until ($choice -eq 3)

これは私の意見ではかなりユニークな戦略です。私はこれをジェリー・リー・フォードの本から引用しました:まったくの初心者のためのMicrosoftWindowsPowerShellプログラミング

これらおよびPowerShellの他のすべてのループの詳細については、 http://www.powershellpro.com/powershell-tutorial-introduction/logic-using-loops/を参照してください。

于 2012-07-24T19:09:54.853 に答える
2

私が見つけたブログ投稿から:

echo "Press any key to exit..."
$Host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown") | OUT-NULL
$Host.UI.RawUI.FlushInputbuffer()
于 2019-04-13T09:20:54.750 に答える
0

全体をブロックで囲みwhile (1) {}ます。これにより、ブレーク(ループの終了)または終了(スクリプトの終了)が発生した場合にのみ終了する無限ループが作成されます。おそらく、オプション3はそれらのステートメントの1つにつながります。

于 2012-07-24T19:04:06.857 に答える